package org.xtext.telcodev.dsl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.xtext.telcodev.dsl.services.VoiSGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalVoiSParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_ML_COMMENT", "RULE_INT", "RULE_STRING", "RULE_EVENTENUM", "RULE_LOGIC_WORD", "RULE_COMPARE", "RULE_NEGATION", "RULE_MATH", "RULE_CONCATENATION", "RULE_NULL", "RULE_SESSION", "RULE_BOOL", "RULE_DOUBLE", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'application'", "'withStates'", "'state'", "'times:'", "'timeout:'", "'{'", "'}'", "'dialTo'", "';'", "'play'", "'record'", "'time:'", "'as'", "'reject'", "'hangup'", "'getDigits'", "':'", "'num:'", "'ask'", "'('", "'choices:'", "')'", "'sendAs'", "'to'", "'say'", "'goTo'", "'when'", "'else'", "'if'", "'string'", "'='", "'num'", "'boolean'", "'save'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=20;
    public static final int T__21=21;
    public static final int RULE_BOOL=16;
    public static final int EOF=-1;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int RULE_CONCATENATION=13;
    public static final int RULE_INT=6;
    public static final int RULE_COMPARE=10;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int RULE_NEGATION=11;
    public static final int RULE_SL_COMMENT=18;
    public static final int RULE_DOUBLE=17;
    public static final int RULE_NULL=14;
    public static final int RULE_ML_COMMENT=5;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int RULE_STRING=7;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int RULE_LOGIC_WORD=9;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_SESSION=15;
    public static final int RULE_EVENTENUM=8;
    public static final int RULE_WS=19;
    public static final int RULE_MATH=12;

    // delegates
    // delegators


        public InternalVoiSParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalVoiSParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalVoiSParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g"; }



     	private VoiSGrammarAccess grammarAccess;
     	
        public InternalVoiSParser(TokenStream input, VoiSGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Document";	
       	}
       	
       	@Override
       	protected VoiSGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleDocument"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:67:1: entryRuleDocument returns [EObject current=null] : iv_ruleDocument= ruleDocument EOF ;
    public final EObject entryRuleDocument() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDocument = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:68:2: (iv_ruleDocument= ruleDocument EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:69:2: iv_ruleDocument= ruleDocument EOF
            {
             newCompositeNode(grammarAccess.getDocumentRule()); 
            pushFollow(FOLLOW_ruleDocument_in_entryRuleDocument75);
            iv_ruleDocument=ruleDocument();

            state._fsp--;

             current =iv_ruleDocument; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDocument85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDocument"


    // $ANTLR start "ruleDocument"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:76:1: ruleDocument returns [EObject current=null] : (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) ( (lv_states_2_0= 'withStates' ) )? ( (lv_elements_3_0= ruleAbstractElement ) )* ( (lv_sta_4_0= ruleState ) )* ) ;
    public final EObject ruleDocument() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token lv_states_2_0=null;
        EObject lv_elements_3_0 = null;

        EObject lv_sta_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:79:28: ( (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) ( (lv_states_2_0= 'withStates' ) )? ( (lv_elements_3_0= ruleAbstractElement ) )* ( (lv_sta_4_0= ruleState ) )* ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:80:1: (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) ( (lv_states_2_0= 'withStates' ) )? ( (lv_elements_3_0= ruleAbstractElement ) )* ( (lv_sta_4_0= ruleState ) )* )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:80:1: (otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) ( (lv_states_2_0= 'withStates' ) )? ( (lv_elements_3_0= ruleAbstractElement ) )* ( (lv_sta_4_0= ruleState ) )* )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:80:3: otherlv_0= 'application' ( (lv_name_1_0= RULE_ID ) ) ( (lv_states_2_0= 'withStates' ) )? ( (lv_elements_3_0= ruleAbstractElement ) )* ( (lv_sta_4_0= ruleState ) )*
            {
            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleDocument122); 

                	newLeafNode(otherlv_0, grammarAccess.getDocumentAccess().getApplicationKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:84:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:85:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:85:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:86:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDocument139); 

            			newLeafNode(lv_name_1_0, grammarAccess.getDocumentAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getDocumentRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:102:2: ( (lv_states_2_0= 'withStates' ) )?
            int alt1=2;
            int LA1_0 = input.LA(1);

            if ( (LA1_0==22) ) {
                alt1=1;
            }
            switch (alt1) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:103:1: (lv_states_2_0= 'withStates' )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:103:1: (lv_states_2_0= 'withStates' )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:104:3: lv_states_2_0= 'withStates'
                    {
                    lv_states_2_0=(Token)match(input,22,FOLLOW_22_in_ruleDocument162); 

                            newLeafNode(lv_states_2_0, grammarAccess.getDocumentAccess().getStatesWithStatesKeyword_2_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getDocumentRule());
                    	        }
                           		setWithLastConsumed(current, "states", true, "withStates");
                    	    

                    }


                    }
                    break;

            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:117:3: ( (lv_elements_3_0= ruleAbstractElement ) )*
            loop2:
            do {
                int alt2=2;
                int LA2_0 = input.LA(1);

                if ( ((LA2_0>=RULE_ID && LA2_0<=RULE_ML_COMMENT)||LA2_0==28||(LA2_0>=30 && LA2_0<=31)||(LA2_0>=34 && LA2_0<=36)||LA2_0==39||LA2_0==43||LA2_0==45||(LA2_0>=49 && LA2_0<=50)||(LA2_0>=52 && LA2_0<=53)) ) {
                    alt2=1;
                }


                switch (alt2) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:118:1: (lv_elements_3_0= ruleAbstractElement )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:118:1: (lv_elements_3_0= ruleAbstractElement )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:119:3: lv_elements_3_0= ruleAbstractElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getDocumentAccess().getElementsAbstractElementParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractElement_in_ruleDocument197);
            	    lv_elements_3_0=ruleAbstractElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getDocumentRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_3_0, 
            	            		"AbstractElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop2;
                }
            } while (true);

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:135:3: ( (lv_sta_4_0= ruleState ) )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==23||(LA3_0>=25 && LA3_0<=26)) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:136:1: (lv_sta_4_0= ruleState )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:136:1: (lv_sta_4_0= ruleState )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:137:3: lv_sta_4_0= ruleState
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getDocumentAccess().getStaStateParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleState_in_ruleDocument219);
            	    lv_sta_4_0=ruleState();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getDocumentRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"sta",
            	            		lv_sta_4_0, 
            	            		"State");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDocument"


    // $ANTLR start "entryRuleAbstractElement"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:161:1: entryRuleAbstractElement returns [EObject current=null] : iv_ruleAbstractElement= ruleAbstractElement EOF ;
    public final EObject entryRuleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractElement = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:162:2: (iv_ruleAbstractElement= ruleAbstractElement EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:163:2: iv_ruleAbstractElement= ruleAbstractElement EOF
            {
             newCompositeNode(grammarAccess.getAbstractElementRule()); 
            pushFollow(FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement256);
            iv_ruleAbstractElement=ruleAbstractElement();

            state._fsp--;

             current =iv_ruleAbstractElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractElement266); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractElement"


    // $ANTLR start "ruleAbstractElement"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:170:1: ruleAbstractElement returns [EObject current=null] : (this_Statement_0= ruleStatement | this_IfExp_1= ruleIfExp ) ;
    public final EObject ruleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject this_Statement_0 = null;

        EObject this_IfExp_1 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:173:28: ( (this_Statement_0= ruleStatement | this_IfExp_1= ruleIfExp ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:174:1: (this_Statement_0= ruleStatement | this_IfExp_1= ruleIfExp )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:174:1: (this_Statement_0= ruleStatement | this_IfExp_1= ruleIfExp )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( ((LA4_0>=RULE_ID && LA4_0<=RULE_ML_COMMENT)||LA4_0==28||(LA4_0>=30 && LA4_0<=31)||(LA4_0>=34 && LA4_0<=36)||LA4_0==39||LA4_0==43||LA4_0==45||LA4_0==50||(LA4_0>=52 && LA4_0<=53)) ) {
                alt4=1;
            }
            else if ( (LA4_0==49) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:175:5: this_Statement_0= ruleStatement
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getStatementParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleStatement_in_ruleAbstractElement313);
                    this_Statement_0=ruleStatement();

                    state._fsp--;

                     
                            current = this_Statement_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:185:5: this_IfExp_1= ruleIfExp
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getIfExpParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleIfExp_in_ruleAbstractElement340);
                    this_IfExp_1=ruleIfExp();

                    state._fsp--;

                     
                            current = this_IfExp_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractElement"


    // $ANTLR start "entryRuleStatement"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:201:1: entryRuleStatement returns [EObject current=null] : iv_ruleStatement= ruleStatement EOF ;
    public final EObject entryRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStatement = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:202:2: (iv_ruleStatement= ruleStatement EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:203:2: iv_ruleStatement= ruleStatement EOF
            {
             newCompositeNode(grammarAccess.getStatementRule()); 
            pushFollow(FOLLOW_ruleStatement_in_entryRuleStatement375);
            iv_ruleStatement=ruleStatement();

            state._fsp--;

             current =iv_ruleStatement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStatement385); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStatement"


    // $ANTLR start "ruleStatement"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:210:1: ruleStatement returns [EObject current=null] : (this_NumVariable_0= ruleNumVariable | this_StringVariable_1= ruleStringVariable | this_BoolVariable_2= ruleBoolVariable | this_VoiceTag_3= ruleVoiceTag | this_Assigment_4= ruleAssigment | this_ML_COMMENT_5= RULE_ML_COMMENT ) ;
    public final EObject ruleStatement() throws RecognitionException {
        EObject current = null;

        Token this_ML_COMMENT_5=null;
        EObject this_NumVariable_0 = null;

        EObject this_StringVariable_1 = null;

        EObject this_BoolVariable_2 = null;

        EObject this_VoiceTag_3 = null;

        EObject this_Assigment_4 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:213:28: ( (this_NumVariable_0= ruleNumVariable | this_StringVariable_1= ruleStringVariable | this_BoolVariable_2= ruleBoolVariable | this_VoiceTag_3= ruleVoiceTag | this_Assigment_4= ruleAssigment | this_ML_COMMENT_5= RULE_ML_COMMENT ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:214:1: (this_NumVariable_0= ruleNumVariable | this_StringVariable_1= ruleStringVariable | this_BoolVariable_2= ruleBoolVariable | this_VoiceTag_3= ruleVoiceTag | this_Assigment_4= ruleAssigment | this_ML_COMMENT_5= RULE_ML_COMMENT )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:214:1: (this_NumVariable_0= ruleNumVariable | this_StringVariable_1= ruleStringVariable | this_BoolVariable_2= ruleBoolVariable | this_VoiceTag_3= ruleVoiceTag | this_Assigment_4= ruleAssigment | this_ML_COMMENT_5= RULE_ML_COMMENT )
            int alt5=6;
            switch ( input.LA(1) ) {
            case 52:
                {
                alt5=1;
                }
                break;
            case 50:
                {
                alt5=2;
                }
                break;
            case 53:
                {
                alt5=3;
                }
                break;
            case 28:
            case 30:
            case 31:
            case 34:
            case 35:
            case 36:
            case 39:
            case 43:
            case 45:
                {
                alt5=4;
                }
                break;
            case RULE_ID:
                {
                alt5=5;
                }
                break;
            case RULE_ML_COMMENT:
                {
                alt5=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 5, 0, input);

                throw nvae;
            }

            switch (alt5) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:215:5: this_NumVariable_0= ruleNumVariable
                    {
                     
                            newCompositeNode(grammarAccess.getStatementAccess().getNumVariableParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleNumVariable_in_ruleStatement432);
                    this_NumVariable_0=ruleNumVariable();

                    state._fsp--;

                     
                            current = this_NumVariable_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:225:5: this_StringVariable_1= ruleStringVariable
                    {
                     
                            newCompositeNode(grammarAccess.getStatementAccess().getStringVariableParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleStringVariable_in_ruleStatement459);
                    this_StringVariable_1=ruleStringVariable();

                    state._fsp--;

                     
                            current = this_StringVariable_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:235:5: this_BoolVariable_2= ruleBoolVariable
                    {
                     
                            newCompositeNode(grammarAccess.getStatementAccess().getBoolVariableParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleBoolVariable_in_ruleStatement486);
                    this_BoolVariable_2=ruleBoolVariable();

                    state._fsp--;

                     
                            current = this_BoolVariable_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:245:5: this_VoiceTag_3= ruleVoiceTag
                    {
                     
                            newCompositeNode(grammarAccess.getStatementAccess().getVoiceTagParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleVoiceTag_in_ruleStatement513);
                    this_VoiceTag_3=ruleVoiceTag();

                    state._fsp--;

                     
                            current = this_VoiceTag_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:255:5: this_Assigment_4= ruleAssigment
                    {
                     
                            newCompositeNode(grammarAccess.getStatementAccess().getAssigmentParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleAssigment_in_ruleStatement540);
                    this_Assigment_4=ruleAssigment();

                    state._fsp--;

                     
                            current = this_Assigment_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:264:6: this_ML_COMMENT_5= RULE_ML_COMMENT
                    {
                    this_ML_COMMENT_5=(Token)match(input,RULE_ML_COMMENT,FOLLOW_RULE_ML_COMMENT_in_ruleStatement556); 
                     
                        newLeafNode(this_ML_COMMENT_5, grammarAccess.getStatementAccess().getML_COMMENTTerminalRuleCall_5()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStatement"


    // $ANTLR start "entryRuleStateAbstractElement"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:276:1: entryRuleStateAbstractElement returns [EObject current=null] : iv_ruleStateAbstractElement= ruleStateAbstractElement EOF ;
    public final EObject entryRuleStateAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStateAbstractElement = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:277:2: (iv_ruleStateAbstractElement= ruleStateAbstractElement EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:278:2: iv_ruleStateAbstractElement= ruleStateAbstractElement EOF
            {
             newCompositeNode(grammarAccess.getStateAbstractElementRule()); 
            pushFollow(FOLLOW_ruleStateAbstractElement_in_entryRuleStateAbstractElement591);
            iv_ruleStateAbstractElement=ruleStateAbstractElement();

            state._fsp--;

             current =iv_ruleStateAbstractElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStateAbstractElement601); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStateAbstractElement"


    // $ANTLR start "ruleStateAbstractElement"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:285:1: ruleStateAbstractElement returns [EObject current=null] : (this_Statement_0= ruleStatement | this_Save_1= ruleSave | this_Transition_2= ruleTransition | this_IfStateExp_3= ruleIfStateExp ) ;
    public final EObject ruleStateAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject this_Statement_0 = null;

        EObject this_Save_1 = null;

        EObject this_Transition_2 = null;

        EObject this_IfStateExp_3 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:288:28: ( (this_Statement_0= ruleStatement | this_Save_1= ruleSave | this_Transition_2= ruleTransition | this_IfStateExp_3= ruleIfStateExp ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:289:1: (this_Statement_0= ruleStatement | this_Save_1= ruleSave | this_Transition_2= ruleTransition | this_IfStateExp_3= ruleIfStateExp )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:289:1: (this_Statement_0= ruleStatement | this_Save_1= ruleSave | this_Transition_2= ruleTransition | this_IfStateExp_3= ruleIfStateExp )
            int alt6=4;
            switch ( input.LA(1) ) {
            case RULE_ID:
            case RULE_ML_COMMENT:
            case 28:
            case 30:
            case 31:
            case 34:
            case 35:
            case 36:
            case 39:
            case 43:
            case 45:
            case 50:
            case 52:
            case 53:
                {
                alt6=1;
                }
                break;
            case 54:
                {
                alt6=2;
                }
                break;
            case 46:
                {
                alt6=3;
                }
                break;
            case 49:
                {
                alt6=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:290:5: this_Statement_0= ruleStatement
                    {
                     
                            newCompositeNode(grammarAccess.getStateAbstractElementAccess().getStatementParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleStatement_in_ruleStateAbstractElement648);
                    this_Statement_0=ruleStatement();

                    state._fsp--;

                     
                            current = this_Statement_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:300:5: this_Save_1= ruleSave
                    {
                     
                            newCompositeNode(grammarAccess.getStateAbstractElementAccess().getSaveParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleSave_in_ruleStateAbstractElement675);
                    this_Save_1=ruleSave();

                    state._fsp--;

                     
                            current = this_Save_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:310:5: this_Transition_2= ruleTransition
                    {
                     
                            newCompositeNode(grammarAccess.getStateAbstractElementAccess().getTransitionParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleTransition_in_ruleStateAbstractElement702);
                    this_Transition_2=ruleTransition();

                    state._fsp--;

                     
                            current = this_Transition_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:320:5: this_IfStateExp_3= ruleIfStateExp
                    {
                     
                            newCompositeNode(grammarAccess.getStateAbstractElementAccess().getIfStateExpParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleIfStateExp_in_ruleStateAbstractElement729);
                    this_IfStateExp_3=ruleIfStateExp();

                    state._fsp--;

                     
                            current = this_IfStateExp_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStateAbstractElement"


    // $ANTLR start "entryRuleState"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:336:1: entryRuleState returns [EObject current=null] : iv_ruleState= ruleState EOF ;
    public final EObject entryRuleState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleState = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:337:2: (iv_ruleState= ruleState EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:338:2: iv_ruleState= ruleState EOF
            {
             newCompositeNode(grammarAccess.getStateRule()); 
            pushFollow(FOLLOW_ruleState_in_entryRuleState764);
            iv_ruleState=ruleState();

            state._fsp--;

             current =iv_ruleState; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleState774); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleState"


    // $ANTLR start "ruleState"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:345:1: ruleState returns [EObject current=null] : ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?) ) ) ;
    public final EObject ruleState() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_name_2_0=null;
        Token otherlv_3=null;
        Token lv_times_4_0=null;
        Token otherlv_5=null;
        Token lv_timeout_6_0=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        EObject lv_stms_8_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:348:28: ( ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:349:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:349:1: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:351:1: ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:351:1: ( ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:352:2: ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?)
            {
             
            	  getUnorderedGroupHelper().enter(grammarAccess.getStateAccess().getUnorderedGroup());
            	
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:355:2: ( ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?)
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:356:3: ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+ {...}?
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:356:3: ( ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) ) )+
            int cnt10=0;
            loop10:
            do {
                int alt10=3;
                switch ( input.LA(1) ) {
                case 23:
                    {
                    int LA10_2 = input.LA(2);

                    if ( getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 0) ) {
                        alt10=1;
                    }


                    }
                    break;
                case 25:
                    {
                    int LA10_3 = input.LA(2);

                    if ( getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 1) ) {
                        alt10=2;
                    }


                    }
                    break;
                case 26:
                    {
                    int LA10_4 = input.LA(2);

                    if ( getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 1) ) {
                        alt10=2;
                    }


                    }
                    break;

                }

                switch (alt10) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:358:4: ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:358:4: ({...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:359:5: {...}? => ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 0) ) {
            	        throw new FailedPredicateException(input, "ruleState", "getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 0)");
            	    }
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:359:100: ( ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:360:6: ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getStateAccess().getUnorderedGroup(), 0);
            	    	 				
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:363:6: ({...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:363:7: {...}? => (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleState", "true");
            	    }
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:363:16: (otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )? )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:363:18: otherlv_1= 'state' ( (lv_name_2_0= RULE_ID ) ) (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )?
            	    {
            	    otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleState856); 

            	        	newLeafNode(otherlv_1, grammarAccess.getStateAccess().getStateKeyword_0_0());
            	        
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:367:1: ( (lv_name_2_0= RULE_ID ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:368:1: (lv_name_2_0= RULE_ID )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:368:1: (lv_name_2_0= RULE_ID )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:369:3: lv_name_2_0= RULE_ID
            	    {
            	    lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleState873); 

            	    			newLeafNode(lv_name_2_0, grammarAccess.getStateAccess().getNameIDTerminalRuleCall_0_1_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getStateRule());
            	    	        }
            	           		setWithLastConsumed(
            	           			current, 
            	           			"name",
            	            		lv_name_2_0, 
            	            		"ID");
            	    	    

            	    }


            	    }

            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:385:2: (otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) ) )?
            	    int alt7=2;
            	    int LA7_0 = input.LA(1);

            	    if ( (LA7_0==24) ) {
            	        alt7=1;
            	    }
            	    switch (alt7) {
            	        case 1 :
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:385:4: otherlv_3= 'times:' ( (lv_times_4_0= RULE_INT ) )
            	            {
            	            otherlv_3=(Token)match(input,24,FOLLOW_24_in_ruleState891); 

            	                	newLeafNode(otherlv_3, grammarAccess.getStateAccess().getTimesKeyword_0_2_0());
            	                
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:389:1: ( (lv_times_4_0= RULE_INT ) )
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:390:1: (lv_times_4_0= RULE_INT )
            	            {
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:390:1: (lv_times_4_0= RULE_INT )
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:391:3: lv_times_4_0= RULE_INT
            	            {
            	            lv_times_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleState908); 

            	            			newLeafNode(lv_times_4_0, grammarAccess.getStateAccess().getTimesINTTerminalRuleCall_0_2_1_0()); 
            	            		

            	            	        if (current==null) {
            	            	            current = createModelElement(grammarAccess.getStateRule());
            	            	        }
            	                   		setWithLastConsumed(
            	                   			current, 
            	                   			"times",
            	                    		lv_times_4_0, 
            	                    		"INT");
            	            	    

            	            }


            	            }


            	            }
            	            break;

            	    }


            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStateAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;
            	case 2 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:414:4: ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:414:4: ({...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:415:5: {...}? => ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) )
            	    {
            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 1) ) {
            	        throw new FailedPredicateException(input, "ruleState", "getUnorderedGroupHelper().canSelect(grammarAccess.getStateAccess().getUnorderedGroup(), 1)");
            	    }
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:415:100: ( ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:416:6: ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) )
            	    {
            	     
            	    	 				  getUnorderedGroupHelper().select(grammarAccess.getStateAccess().getUnorderedGroup(), 1);
            	    	 				
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:419:6: ({...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:419:7: {...}? => ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' )
            	    {
            	    if ( !((true)) ) {
            	        throw new FailedPredicateException(input, "ruleState", "true");
            	    }
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:419:16: ( (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}' )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:419:17: (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )? otherlv_7= '{' ( (lv_stms_8_0= ruleStateAbstractElement ) )* otherlv_9= '}'
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:419:17: (otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) ) )?
            	    int alt8=2;
            	    int LA8_0 = input.LA(1);

            	    if ( (LA8_0==25) ) {
            	        alt8=1;
            	    }
            	    switch (alt8) {
            	        case 1 :
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:419:19: otherlv_5= 'timeout:' ( (lv_timeout_6_0= RULE_INT ) )
            	            {
            	            otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleState984); 

            	                	newLeafNode(otherlv_5, grammarAccess.getStateAccess().getTimeoutKeyword_1_0_0());
            	                
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:423:1: ( (lv_timeout_6_0= RULE_INT ) )
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:424:1: (lv_timeout_6_0= RULE_INT )
            	            {
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:424:1: (lv_timeout_6_0= RULE_INT )
            	            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:425:3: lv_timeout_6_0= RULE_INT
            	            {
            	            lv_timeout_6_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleState1001); 

            	            			newLeafNode(lv_timeout_6_0, grammarAccess.getStateAccess().getTimeoutINTTerminalRuleCall_1_0_1_0()); 
            	            		

            	            	        if (current==null) {
            	            	            current = createModelElement(grammarAccess.getStateRule());
            	            	        }
            	                   		setWithLastConsumed(
            	                   			current, 
            	                   			"timeout",
            	                    		lv_timeout_6_0, 
            	                    		"INT");
            	            	    

            	            }


            	            }


            	            }
            	            break;

            	    }

            	    otherlv_7=(Token)match(input,26,FOLLOW_26_in_ruleState1020); 

            	        	newLeafNode(otherlv_7, grammarAccess.getStateAccess().getLeftCurlyBracketKeyword_1_1());
            	        
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:445:1: ( (lv_stms_8_0= ruleStateAbstractElement ) )*
            	    loop9:
            	    do {
            	        int alt9=2;
            	        int LA9_0 = input.LA(1);

            	        if ( ((LA9_0>=RULE_ID && LA9_0<=RULE_ML_COMMENT)||LA9_0==28||(LA9_0>=30 && LA9_0<=31)||(LA9_0>=34 && LA9_0<=36)||LA9_0==39||LA9_0==43||(LA9_0>=45 && LA9_0<=46)||(LA9_0>=49 && LA9_0<=50)||(LA9_0>=52 && LA9_0<=54)) ) {
            	            alt9=1;
            	        }


            	        switch (alt9) {
            	    	case 1 :
            	    	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:446:1: (lv_stms_8_0= ruleStateAbstractElement )
            	    	    {
            	    	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:446:1: (lv_stms_8_0= ruleStateAbstractElement )
            	    	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:447:3: lv_stms_8_0= ruleStateAbstractElement
            	    	    {
            	    	     
            	    	    	        newCompositeNode(grammarAccess.getStateAccess().getStmsStateAbstractElementParserRuleCall_1_2_0()); 
            	    	    	    
            	    	    pushFollow(FOLLOW_ruleStateAbstractElement_in_ruleState1041);
            	    	    lv_stms_8_0=ruleStateAbstractElement();

            	    	    state._fsp--;


            	    	    	        if (current==null) {
            	    	    	            current = createModelElementForParent(grammarAccess.getStateRule());
            	    	    	        }
            	    	           		add(
            	    	           			current, 
            	    	           			"stms",
            	    	            		lv_stms_8_0, 
            	    	            		"StateAbstractElement");
            	    	    	        afterParserOrEnumRuleCall();
            	    	    	    

            	    	    }


            	    	    }
            	    	    break;

            	    	default :
            	    	    break loop9;
            	        }
            	    } while (true);

            	    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleState1054); 

            	        	newLeafNode(otherlv_9, grammarAccess.getStateAccess().getRightCurlyBracketKeyword_1_3());
            	        

            	    }


            	    }

            	     
            	    	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getStateAccess().getUnorderedGroup());
            	    	 				

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt10 >= 1 ) break loop10;
                        EarlyExitException eee =
                            new EarlyExitException(10, input);
                        throw eee;
                }
                cnt10++;
            } while (true);

            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getStateAccess().getUnorderedGroup()) ) {
                throw new FailedPredicateException(input, "ruleState", "getUnorderedGroupHelper().canLeave(grammarAccess.getStateAccess().getUnorderedGroup())");
            }

            }


            }

             
            	  getUnorderedGroupHelper().leave(grammarAccess.getStateAccess().getUnorderedGroup());
            	

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleState"


    // $ANTLR start "entryRuleVoiceTag"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:490:1: entryRuleVoiceTag returns [EObject current=null] : iv_ruleVoiceTag= ruleVoiceTag EOF ;
    public final EObject entryRuleVoiceTag() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVoiceTag = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:491:2: (iv_ruleVoiceTag= ruleVoiceTag EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:492:2: iv_ruleVoiceTag= ruleVoiceTag EOF
            {
             newCompositeNode(grammarAccess.getVoiceTagRule()); 
            pushFollow(FOLLOW_ruleVoiceTag_in_entryRuleVoiceTag1136);
            iv_ruleVoiceTag=ruleVoiceTag();

            state._fsp--;

             current =iv_ruleVoiceTag; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVoiceTag1146); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVoiceTag"


    // $ANTLR start "ruleVoiceTag"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:499:1: ruleVoiceTag returns [EObject current=null] : (this_Say_0= ruleSay | this_Dial_1= ruleDial | this_Play_2= rulePlay | this_Record_3= ruleRecord | this_GetDigits_4= ruleGetDigits | this_Ask_5= ruleAsk | this_Send_6= ruleSend | this_Reject_7= ruleReject | this_Hangup_8= ruleHangup ) ;
    public final EObject ruleVoiceTag() throws RecognitionException {
        EObject current = null;

        EObject this_Say_0 = null;

        EObject this_Dial_1 = null;

        EObject this_Play_2 = null;

        EObject this_Record_3 = null;

        EObject this_GetDigits_4 = null;

        EObject this_Ask_5 = null;

        EObject this_Send_6 = null;

        EObject this_Reject_7 = null;

        EObject this_Hangup_8 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:502:28: ( (this_Say_0= ruleSay | this_Dial_1= ruleDial | this_Play_2= rulePlay | this_Record_3= ruleRecord | this_GetDigits_4= ruleGetDigits | this_Ask_5= ruleAsk | this_Send_6= ruleSend | this_Reject_7= ruleReject | this_Hangup_8= ruleHangup ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:503:1: (this_Say_0= ruleSay | this_Dial_1= ruleDial | this_Play_2= rulePlay | this_Record_3= ruleRecord | this_GetDigits_4= ruleGetDigits | this_Ask_5= ruleAsk | this_Send_6= ruleSend | this_Reject_7= ruleReject | this_Hangup_8= ruleHangup )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:503:1: (this_Say_0= ruleSay | this_Dial_1= ruleDial | this_Play_2= rulePlay | this_Record_3= ruleRecord | this_GetDigits_4= ruleGetDigits | this_Ask_5= ruleAsk | this_Send_6= ruleSend | this_Reject_7= ruleReject | this_Hangup_8= ruleHangup )
            int alt11=9;
            switch ( input.LA(1) ) {
            case 45:
                {
                alt11=1;
                }
                break;
            case 28:
                {
                alt11=2;
                }
                break;
            case 30:
                {
                alt11=3;
                }
                break;
            case 31:
                {
                alt11=4;
                }
                break;
            case 36:
                {
                alt11=5;
                }
                break;
            case 39:
                {
                alt11=6;
                }
                break;
            case 43:
                {
                alt11=7;
                }
                break;
            case 34:
                {
                alt11=8;
                }
                break;
            case 35:
                {
                alt11=9;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }

            switch (alt11) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:504:5: this_Say_0= ruleSay
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getSayParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleSay_in_ruleVoiceTag1193);
                    this_Say_0=ruleSay();

                    state._fsp--;

                     
                            current = this_Say_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:514:5: this_Dial_1= ruleDial
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getDialParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleDial_in_ruleVoiceTag1220);
                    this_Dial_1=ruleDial();

                    state._fsp--;

                     
                            current = this_Dial_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:524:5: this_Play_2= rulePlay
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getPlayParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_rulePlay_in_ruleVoiceTag1247);
                    this_Play_2=rulePlay();

                    state._fsp--;

                     
                            current = this_Play_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:534:5: this_Record_3= ruleRecord
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getRecordParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleRecord_in_ruleVoiceTag1274);
                    this_Record_3=ruleRecord();

                    state._fsp--;

                     
                            current = this_Record_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:544:5: this_GetDigits_4= ruleGetDigits
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getGetDigitsParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleGetDigits_in_ruleVoiceTag1301);
                    this_GetDigits_4=ruleGetDigits();

                    state._fsp--;

                     
                            current = this_GetDigits_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:554:5: this_Ask_5= ruleAsk
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getAskParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleAsk_in_ruleVoiceTag1328);
                    this_Ask_5=ruleAsk();

                    state._fsp--;

                     
                            current = this_Ask_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 7 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:564:5: this_Send_6= ruleSend
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getSendParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleSend_in_ruleVoiceTag1355);
                    this_Send_6=ruleSend();

                    state._fsp--;

                     
                            current = this_Send_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 8 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:574:5: this_Reject_7= ruleReject
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getRejectParserRuleCall_7()); 
                        
                    pushFollow(FOLLOW_ruleReject_in_ruleVoiceTag1382);
                    this_Reject_7=ruleReject();

                    state._fsp--;

                     
                            current = this_Reject_7; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 9 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:584:5: this_Hangup_8= ruleHangup
                    {
                     
                            newCompositeNode(grammarAccess.getVoiceTagAccess().getHangupParserRuleCall_8()); 
                        
                    pushFollow(FOLLOW_ruleHangup_in_ruleVoiceTag1409);
                    this_Hangup_8=ruleHangup();

                    state._fsp--;

                     
                            current = this_Hangup_8; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVoiceTag"


    // $ANTLR start "entryRuleDial"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:600:1: entryRuleDial returns [EObject current=null] : iv_ruleDial= ruleDial EOF ;
    public final EObject entryRuleDial() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDial = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:601:2: (iv_ruleDial= ruleDial EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:602:2: iv_ruleDial= ruleDial EOF
            {
             newCompositeNode(grammarAccess.getDialRule()); 
            pushFollow(FOLLOW_ruleDial_in_entryRuleDial1444);
            iv_ruleDial=ruleDial();

            state._fsp--;

             current =iv_ruleDial; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleDial1454); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDial"


    // $ANTLR start "ruleDial"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:609:1: ruleDial returns [EObject current=null] : (otherlv_0= 'dialTo' ( (lv_to_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' ) ;
    public final EObject ruleDial() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_to_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:612:28: ( (otherlv_0= 'dialTo' ( (lv_to_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:613:1: (otherlv_0= 'dialTo' ( (lv_to_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:613:1: (otherlv_0= 'dialTo' ( (lv_to_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:613:3: otherlv_0= 'dialTo' ( (lv_to_1_0= ruleConcatenationExpression ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleDial1491); 

                	newLeafNode(otherlv_0, grammarAccess.getDialAccess().getDialToKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:617:1: ( (lv_to_1_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:618:1: (lv_to_1_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:618:1: (lv_to_1_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:619:3: lv_to_1_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getDialAccess().getToConcatenationExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleDial1512);
            lv_to_1_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getDialRule());
            	        }
                   		set(
                   			current, 
                   			"to",
                    		lv_to_1_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleDial1524); 

                	newLeafNode(otherlv_2, grammarAccess.getDialAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDial"


    // $ANTLR start "entryRulePlay"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:647:1: entryRulePlay returns [EObject current=null] : iv_rulePlay= rulePlay EOF ;
    public final EObject entryRulePlay() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePlay = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:648:2: (iv_rulePlay= rulePlay EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:649:2: iv_rulePlay= rulePlay EOF
            {
             newCompositeNode(grammarAccess.getPlayRule()); 
            pushFollow(FOLLOW_rulePlay_in_entryRulePlay1560);
            iv_rulePlay=rulePlay();

            state._fsp--;

             current =iv_rulePlay; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePlay1570); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePlay"


    // $ANTLR start "rulePlay"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:656:1: rulePlay returns [EObject current=null] : (otherlv_0= 'play' ( (lv_file_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' ) ;
    public final EObject rulePlay() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_file_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:659:28: ( (otherlv_0= 'play' ( (lv_file_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:660:1: (otherlv_0= 'play' ( (lv_file_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:660:1: (otherlv_0= 'play' ( (lv_file_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:660:3: otherlv_0= 'play' ( (lv_file_1_0= ruleConcatenationExpression ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,30,FOLLOW_30_in_rulePlay1607); 

                	newLeafNode(otherlv_0, grammarAccess.getPlayAccess().getPlayKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:664:1: ( (lv_file_1_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:665:1: (lv_file_1_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:665:1: (lv_file_1_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:666:3: lv_file_1_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getPlayAccess().getFileConcatenationExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_rulePlay1628);
            lv_file_1_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPlayRule());
            	        }
                   		set(
                   			current, 
                   			"file",
                    		lv_file_1_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,29,FOLLOW_29_in_rulePlay1640); 

                	newLeafNode(otherlv_2, grammarAccess.getPlayAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePlay"


    // $ANTLR start "entryRuleRecord"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:694:1: entryRuleRecord returns [EObject current=null] : iv_ruleRecord= ruleRecord EOF ;
    public final EObject entryRuleRecord() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRecord = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:695:2: (iv_ruleRecord= ruleRecord EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:696:2: iv_ruleRecord= ruleRecord EOF
            {
             newCompositeNode(grammarAccess.getRecordRule()); 
            pushFollow(FOLLOW_ruleRecord_in_entryRuleRecord1676);
            iv_ruleRecord=ruleRecord();

            state._fsp--;

             current =iv_ruleRecord; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRecord1686); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRecord"


    // $ANTLR start "ruleRecord"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:703:1: ruleRecord returns [EObject current=null] : (otherlv_0= 'record' ( (lv_action_1_0= ruleConcatenationExpression ) ) (otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) ) )? (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? otherlv_6= ';' ) ;
    public final EObject ruleRecord() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token lv_time_3_0=null;
        Token otherlv_4=null;
        Token lv_name_5_0=null;
        Token otherlv_6=null;
        EObject lv_action_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:706:28: ( (otherlv_0= 'record' ( (lv_action_1_0= ruleConcatenationExpression ) ) (otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) ) )? (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? otherlv_6= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:707:1: (otherlv_0= 'record' ( (lv_action_1_0= ruleConcatenationExpression ) ) (otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) ) )? (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? otherlv_6= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:707:1: (otherlv_0= 'record' ( (lv_action_1_0= ruleConcatenationExpression ) ) (otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) ) )? (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? otherlv_6= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:707:3: otherlv_0= 'record' ( (lv_action_1_0= ruleConcatenationExpression ) ) (otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) ) )? (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )? otherlv_6= ';'
            {
            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleRecord1723); 

                	newLeafNode(otherlv_0, grammarAccess.getRecordAccess().getRecordKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:711:1: ( (lv_action_1_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:712:1: (lv_action_1_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:712:1: (lv_action_1_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:713:3: lv_action_1_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getRecordAccess().getActionConcatenationExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleRecord1744);
            lv_action_1_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRecordRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_1_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:729:2: (otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==32) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:729:4: otherlv_2= 'time:' ( (lv_time_3_0= RULE_INT ) )
                    {
                    otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleRecord1757); 

                        	newLeafNode(otherlv_2, grammarAccess.getRecordAccess().getTimeKeyword_2_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:733:1: ( (lv_time_3_0= RULE_INT ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:734:1: (lv_time_3_0= RULE_INT )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:734:1: (lv_time_3_0= RULE_INT )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:735:3: lv_time_3_0= RULE_INT
                    {
                    lv_time_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleRecord1774); 

                    			newLeafNode(lv_time_3_0, grammarAccess.getRecordAccess().getTimeINTTerminalRuleCall_2_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRecordRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"time",
                            		lv_time_3_0, 
                            		"INT");
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:751:4: (otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) ) )?
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==33) ) {
                alt13=1;
            }
            switch (alt13) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:751:6: otherlv_4= 'as' ( (lv_name_5_0= RULE_ID ) )
                    {
                    otherlv_4=(Token)match(input,33,FOLLOW_33_in_ruleRecord1794); 

                        	newLeafNode(otherlv_4, grammarAccess.getRecordAccess().getAsKeyword_3_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:755:1: ( (lv_name_5_0= RULE_ID ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:756:1: (lv_name_5_0= RULE_ID )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:756:1: (lv_name_5_0= RULE_ID )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:757:3: lv_name_5_0= RULE_ID
                    {
                    lv_name_5_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRecord1811); 

                    			newLeafNode(lv_name_5_0, grammarAccess.getRecordAccess().getNameIDTerminalRuleCall_3_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRecordRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_5_0, 
                            		"ID");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleRecord1830); 

                	newLeafNode(otherlv_6, grammarAccess.getRecordAccess().getSemicolonKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRecord"


    // $ANTLR start "entryRuleReject"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:785:1: entryRuleReject returns [EObject current=null] : iv_ruleReject= ruleReject EOF ;
    public final EObject entryRuleReject() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReject = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:786:2: (iv_ruleReject= ruleReject EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:787:2: iv_ruleReject= ruleReject EOF
            {
             newCompositeNode(grammarAccess.getRejectRule()); 
            pushFollow(FOLLOW_ruleReject_in_entryRuleReject1866);
            iv_ruleReject=ruleReject();

            state._fsp--;

             current =iv_ruleReject; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReject1876); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReject"


    // $ANTLR start "ruleReject"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:794:1: ruleReject returns [EObject current=null] : ( ( (lv_name_0_0= 'reject' ) ) otherlv_1= ';' ) ;
    public final EObject ruleReject() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:797:28: ( ( ( (lv_name_0_0= 'reject' ) ) otherlv_1= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:798:1: ( ( (lv_name_0_0= 'reject' ) ) otherlv_1= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:798:1: ( ( (lv_name_0_0= 'reject' ) ) otherlv_1= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:798:2: ( (lv_name_0_0= 'reject' ) ) otherlv_1= ';'
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:798:2: ( (lv_name_0_0= 'reject' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:799:1: (lv_name_0_0= 'reject' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:799:1: (lv_name_0_0= 'reject' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:800:3: lv_name_0_0= 'reject'
            {
            lv_name_0_0=(Token)match(input,34,FOLLOW_34_in_ruleReject1919); 

                    newLeafNode(lv_name_0_0, grammarAccess.getRejectAccess().getNameRejectKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRejectRule());
            	        }
                   		setWithLastConsumed(current, "name", lv_name_0_0, "reject");
            	    

            }


            }

            otherlv_1=(Token)match(input,29,FOLLOW_29_in_ruleReject1944); 

                	newLeafNode(otherlv_1, grammarAccess.getRejectAccess().getSemicolonKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReject"


    // $ANTLR start "entryRuleHangup"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:825:1: entryRuleHangup returns [EObject current=null] : iv_ruleHangup= ruleHangup EOF ;
    public final EObject entryRuleHangup() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleHangup = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:826:2: (iv_ruleHangup= ruleHangup EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:827:2: iv_ruleHangup= ruleHangup EOF
            {
             newCompositeNode(grammarAccess.getHangupRule()); 
            pushFollow(FOLLOW_ruleHangup_in_entryRuleHangup1980);
            iv_ruleHangup=ruleHangup();

            state._fsp--;

             current =iv_ruleHangup; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleHangup1990); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleHangup"


    // $ANTLR start "ruleHangup"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:834:1: ruleHangup returns [EObject current=null] : ( ( (lv_name_0_0= 'hangup' ) ) otherlv_1= ';' ) ;
    public final EObject ruleHangup() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:837:28: ( ( ( (lv_name_0_0= 'hangup' ) ) otherlv_1= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:838:1: ( ( (lv_name_0_0= 'hangup' ) ) otherlv_1= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:838:1: ( ( (lv_name_0_0= 'hangup' ) ) otherlv_1= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:838:2: ( (lv_name_0_0= 'hangup' ) ) otherlv_1= ';'
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:838:2: ( (lv_name_0_0= 'hangup' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:839:1: (lv_name_0_0= 'hangup' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:839:1: (lv_name_0_0= 'hangup' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:840:3: lv_name_0_0= 'hangup'
            {
            lv_name_0_0=(Token)match(input,35,FOLLOW_35_in_ruleHangup2033); 

                    newLeafNode(lv_name_0_0, grammarAccess.getHangupAccess().getNameHangupKeyword_0_0());
                

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getHangupRule());
            	        }
                   		setWithLastConsumed(current, "name", lv_name_0_0, "hangup");
            	    

            }


            }

            otherlv_1=(Token)match(input,29,FOLLOW_29_in_ruleHangup2058); 

                	newLeafNode(otherlv_1, grammarAccess.getHangupAccess().getSemicolonKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleHangup"


    // $ANTLR start "entryRuleGetDigits"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:865:1: entryRuleGetDigits returns [EObject current=null] : iv_ruleGetDigits= ruleGetDigits EOF ;
    public final EObject entryRuleGetDigits() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGetDigits = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:866:2: (iv_ruleGetDigits= ruleGetDigits EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:867:2: iv_ruleGetDigits= ruleGetDigits EOF
            {
             newCompositeNode(grammarAccess.getGetDigitsRule()); 
            pushFollow(FOLLOW_ruleGetDigits_in_entryRuleGetDigits2094);
            iv_ruleGetDigits=ruleGetDigits();

            state._fsp--;

             current =iv_ruleGetDigits; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGetDigits2104); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGetDigits"


    // $ANTLR start "ruleGetDigits"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:874:1: ruleGetDigits returns [EObject current=null] : (otherlv_0= 'getDigits' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) otherlv_4= 'num:' ( (lv_numDigits_5_0= RULE_INT ) ) otherlv_6= ';' ) ;
    public final EObject ruleGetDigits() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token lv_numDigits_5_0=null;
        Token otherlv_6=null;
        EObject lv_question_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:877:28: ( (otherlv_0= 'getDigits' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) otherlv_4= 'num:' ( (lv_numDigits_5_0= RULE_INT ) ) otherlv_6= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:878:1: (otherlv_0= 'getDigits' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) otherlv_4= 'num:' ( (lv_numDigits_5_0= RULE_INT ) ) otherlv_6= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:878:1: (otherlv_0= 'getDigits' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) otherlv_4= 'num:' ( (lv_numDigits_5_0= RULE_INT ) ) otherlv_6= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:878:3: otherlv_0= 'getDigits' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) otherlv_4= 'num:' ( (lv_numDigits_5_0= RULE_INT ) ) otherlv_6= ';'
            {
            otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleGetDigits2141); 

                	newLeafNode(otherlv_0, grammarAccess.getGetDigitsAccess().getGetDigitsKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:882:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:883:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:883:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:884:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleGetDigits2158); 

            			newLeafNode(lv_name_1_0, grammarAccess.getGetDigitsAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getGetDigitsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleGetDigits2175); 

                	newLeafNode(otherlv_2, grammarAccess.getGetDigitsAccess().getColonKeyword_2());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:904:1: ( (lv_question_3_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:905:1: (lv_question_3_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:905:1: (lv_question_3_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:906:3: lv_question_3_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getGetDigitsAccess().getQuestionConcatenationExpressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleGetDigits2196);
            lv_question_3_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getGetDigitsRule());
            	        }
                   		set(
                   			current, 
                   			"question",
                    		lv_question_3_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,38,FOLLOW_38_in_ruleGetDigits2208); 

                	newLeafNode(otherlv_4, grammarAccess.getGetDigitsAccess().getNumKeyword_4());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:926:1: ( (lv_numDigits_5_0= RULE_INT ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:927:1: (lv_numDigits_5_0= RULE_INT )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:927:1: (lv_numDigits_5_0= RULE_INT )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:928:3: lv_numDigits_5_0= RULE_INT
            {
            lv_numDigits_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleGetDigits2225); 

            			newLeafNode(lv_numDigits_5_0, grammarAccess.getGetDigitsAccess().getNumDigitsINTTerminalRuleCall_5_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getGetDigitsRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"numDigits",
                    		lv_numDigits_5_0, 
                    		"INT");
            	    

            }


            }

            otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleGetDigits2242); 

                	newLeafNode(otherlv_6, grammarAccess.getGetDigitsAccess().getSemicolonKeyword_6());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGetDigits"


    // $ANTLR start "entryRuleAsk"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:956:1: entryRuleAsk returns [EObject current=null] : iv_ruleAsk= ruleAsk EOF ;
    public final EObject entryRuleAsk() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAsk = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:957:2: (iv_ruleAsk= ruleAsk EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:958:2: iv_ruleAsk= ruleAsk EOF
            {
             newCompositeNode(grammarAccess.getAskRule()); 
            pushFollow(FOLLOW_ruleAsk_in_entryRuleAsk2278);
            iv_ruleAsk=ruleAsk();

            state._fsp--;

             current =iv_ruleAsk; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAsk2288); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAsk"


    // $ANTLR start "ruleAsk"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:965:1: ruleAsk returns [EObject current=null] : (otherlv_0= 'ask' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) (otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')' )? otherlv_8= ';' ) ;
    public final EObject ruleAsk() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token lv_choices_6_0=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        EObject lv_question_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:968:28: ( (otherlv_0= 'ask' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) (otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')' )? otherlv_8= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:969:1: (otherlv_0= 'ask' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) (otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')' )? otherlv_8= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:969:1: (otherlv_0= 'ask' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) (otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')' )? otherlv_8= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:969:3: otherlv_0= 'ask' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= ':' ( (lv_question_3_0= ruleConcatenationExpression ) ) (otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')' )? otherlv_8= ';'
            {
            otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruleAsk2325); 

                	newLeafNode(otherlv_0, grammarAccess.getAskAccess().getAskKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:973:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:974:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:974:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:975:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAsk2342); 

            			newLeafNode(lv_name_1_0, grammarAccess.getAskAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getAskRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleAsk2359); 

                	newLeafNode(otherlv_2, grammarAccess.getAskAccess().getColonKeyword_2());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:995:1: ( (lv_question_3_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:996:1: (lv_question_3_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:996:1: (lv_question_3_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:997:3: lv_question_3_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getAskAccess().getQuestionConcatenationExpressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleAsk2380);
            lv_question_3_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAskRule());
            	        }
                   		set(
                   			current, 
                   			"question",
                    		lv_question_3_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1013:2: (otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')' )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==40) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1013:4: otherlv_4= '(' (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) ) otherlv_7= ')'
                    {
                    otherlv_4=(Token)match(input,40,FOLLOW_40_in_ruleAsk2393); 

                        	newLeafNode(otherlv_4, grammarAccess.getAskAccess().getLeftParenthesisKeyword_4_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1017:1: (otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1017:3: otherlv_5= 'choices:' ( (lv_choices_6_0= RULE_STRING ) )
                    {
                    otherlv_5=(Token)match(input,41,FOLLOW_41_in_ruleAsk2406); 

                        	newLeafNode(otherlv_5, grammarAccess.getAskAccess().getChoicesKeyword_4_1_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1021:1: ( (lv_choices_6_0= RULE_STRING ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1022:1: (lv_choices_6_0= RULE_STRING )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1022:1: (lv_choices_6_0= RULE_STRING )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1023:3: lv_choices_6_0= RULE_STRING
                    {
                    lv_choices_6_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleAsk2423); 

                    			newLeafNode(lv_choices_6_0, grammarAccess.getAskAccess().getChoicesSTRINGTerminalRuleCall_4_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getAskRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"choices",
                            		lv_choices_6_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }

                    otherlv_7=(Token)match(input,42,FOLLOW_42_in_ruleAsk2441); 

                        	newLeafNode(otherlv_7, grammarAccess.getAskAccess().getRightParenthesisKeyword_4_2());
                        

                    }
                    break;

            }

            otherlv_8=(Token)match(input,29,FOLLOW_29_in_ruleAsk2455); 

                	newLeafNode(otherlv_8, grammarAccess.getAskAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAsk"


    // $ANTLR start "entryRuleSend"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1055:1: entryRuleSend returns [EObject current=null] : iv_ruleSend= ruleSend EOF ;
    public final EObject entryRuleSend() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSend = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1056:2: (iv_ruleSend= ruleSend EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1057:2: iv_ruleSend= ruleSend EOF
            {
             newCompositeNode(grammarAccess.getSendRule()); 
            pushFollow(FOLLOW_ruleSend_in_entryRuleSend2491);
            iv_ruleSend=ruleSend();

            state._fsp--;

             current =iv_ruleSend; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSend2501); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSend"


    // $ANTLR start "ruleSend"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1064:1: ruleSend returns [EObject current=null] : (otherlv_0= 'sendAs' ( (lv_name_1_0= RULE_STRING ) ) ( (lv_that_2_0= ruleConcatenationExpression ) ) otherlv_3= 'to' ( (lv_uri_4_0= ruleConcatenationExpression ) ) otherlv_5= ';' ) ;
    public final EObject ruleSend() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        EObject lv_that_2_0 = null;

        EObject lv_uri_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1067:28: ( (otherlv_0= 'sendAs' ( (lv_name_1_0= RULE_STRING ) ) ( (lv_that_2_0= ruleConcatenationExpression ) ) otherlv_3= 'to' ( (lv_uri_4_0= ruleConcatenationExpression ) ) otherlv_5= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1068:1: (otherlv_0= 'sendAs' ( (lv_name_1_0= RULE_STRING ) ) ( (lv_that_2_0= ruleConcatenationExpression ) ) otherlv_3= 'to' ( (lv_uri_4_0= ruleConcatenationExpression ) ) otherlv_5= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1068:1: (otherlv_0= 'sendAs' ( (lv_name_1_0= RULE_STRING ) ) ( (lv_that_2_0= ruleConcatenationExpression ) ) otherlv_3= 'to' ( (lv_uri_4_0= ruleConcatenationExpression ) ) otherlv_5= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1068:3: otherlv_0= 'sendAs' ( (lv_name_1_0= RULE_STRING ) ) ( (lv_that_2_0= ruleConcatenationExpression ) ) otherlv_3= 'to' ( (lv_uri_4_0= ruleConcatenationExpression ) ) otherlv_5= ';'
            {
            otherlv_0=(Token)match(input,43,FOLLOW_43_in_ruleSend2538); 

                	newLeafNode(otherlv_0, grammarAccess.getSendAccess().getSendAsKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1072:1: ( (lv_name_1_0= RULE_STRING ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1073:1: (lv_name_1_0= RULE_STRING )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1073:1: (lv_name_1_0= RULE_STRING )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1074:3: lv_name_1_0= RULE_STRING
            {
            lv_name_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleSend2555); 

            			newLeafNode(lv_name_1_0, grammarAccess.getSendAccess().getNameSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSendRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"STRING");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1090:2: ( (lv_that_2_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1091:1: (lv_that_2_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1091:1: (lv_that_2_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1092:3: lv_that_2_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getSendAccess().getThatConcatenationExpressionParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleSend2581);
            lv_that_2_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSendRule());
            	        }
                   		set(
                   			current, 
                   			"that",
                    		lv_that_2_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,44,FOLLOW_44_in_ruleSend2593); 

                	newLeafNode(otherlv_3, grammarAccess.getSendAccess().getToKeyword_3());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1112:1: ( (lv_uri_4_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1113:1: (lv_uri_4_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1113:1: (lv_uri_4_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1114:3: lv_uri_4_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getSendAccess().getUriConcatenationExpressionParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleSend2614);
            lv_uri_4_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSendRule());
            	        }
                   		set(
                   			current, 
                   			"uri",
                    		lv_uri_4_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_5=(Token)match(input,29,FOLLOW_29_in_ruleSend2626); 

                	newLeafNode(otherlv_5, grammarAccess.getSendAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSend"


    // $ANTLR start "entryRuleSay"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1142:1: entryRuleSay returns [EObject current=null] : iv_ruleSay= ruleSay EOF ;
    public final EObject entryRuleSay() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSay = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1143:2: (iv_ruleSay= ruleSay EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1144:2: iv_ruleSay= ruleSay EOF
            {
             newCompositeNode(grammarAccess.getSayRule()); 
            pushFollow(FOLLOW_ruleSay_in_entryRuleSay2662);
            iv_ruleSay=ruleSay();

            state._fsp--;

             current =iv_ruleSay; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSay2672); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSay"


    // $ANTLR start "ruleSay"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1151:1: ruleSay returns [EObject current=null] : (otherlv_0= 'say' ( (lv_that_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' ) ;
    public final EObject ruleSay() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_that_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1154:28: ( (otherlv_0= 'say' ( (lv_that_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1155:1: (otherlv_0= 'say' ( (lv_that_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1155:1: (otherlv_0= 'say' ( (lv_that_1_0= ruleConcatenationExpression ) ) otherlv_2= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1155:3: otherlv_0= 'say' ( (lv_that_1_0= ruleConcatenationExpression ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,45,FOLLOW_45_in_ruleSay2709); 

                	newLeafNode(otherlv_0, grammarAccess.getSayAccess().getSayKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1159:1: ( (lv_that_1_0= ruleConcatenationExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1160:1: (lv_that_1_0= ruleConcatenationExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1160:1: (lv_that_1_0= ruleConcatenationExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1161:3: lv_that_1_0= ruleConcatenationExpression
            {
             
            	        newCompositeNode(grammarAccess.getSayAccess().getThatConcatenationExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleSay2730);
            lv_that_1_0=ruleConcatenationExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSayRule());
            	        }
                   		set(
                   			current, 
                   			"that",
                    		lv_that_1_0, 
                    		"ConcatenationExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleSay2742); 

                	newLeafNode(otherlv_2, grammarAccess.getSayAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSay"


    // $ANTLR start "entryRuleTransition"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1189:1: entryRuleTransition returns [EObject current=null] : iv_ruleTransition= ruleTransition EOF ;
    public final EObject entryRuleTransition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTransition = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1190:2: (iv_ruleTransition= ruleTransition EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1191:2: iv_ruleTransition= ruleTransition EOF
            {
             newCompositeNode(grammarAccess.getTransitionRule()); 
            pushFollow(FOLLOW_ruleTransition_in_entryRuleTransition2778);
            iv_ruleTransition=ruleTransition();

            state._fsp--;

             current =iv_ruleTransition; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTransition2788); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTransition"


    // $ANTLR start "ruleTransition"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1198:1: ruleTransition returns [EObject current=null] : (otherlv_0= 'goTo' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'when' ( (lv_event_3_0= RULE_EVENTENUM ) ) otherlv_4= ';' ) ;
    public final EObject ruleTransition() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token lv_event_3_0=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1201:28: ( (otherlv_0= 'goTo' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'when' ( (lv_event_3_0= RULE_EVENTENUM ) ) otherlv_4= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1202:1: (otherlv_0= 'goTo' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'when' ( (lv_event_3_0= RULE_EVENTENUM ) ) otherlv_4= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1202:1: (otherlv_0= 'goTo' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'when' ( (lv_event_3_0= RULE_EVENTENUM ) ) otherlv_4= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1202:3: otherlv_0= 'goTo' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'when' ( (lv_event_3_0= RULE_EVENTENUM ) ) otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,46,FOLLOW_46_in_ruleTransition2825); 

                	newLeafNode(otherlv_0, grammarAccess.getTransitionAccess().getGoToKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1206:1: ( (otherlv_1= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1207:1: (otherlv_1= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1207:1: (otherlv_1= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1208:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getTransitionRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTransition2845); 

            		newLeafNode(otherlv_1, grammarAccess.getTransitionAccess().getTargetStateCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,47,FOLLOW_47_in_ruleTransition2857); 

                	newLeafNode(otherlv_2, grammarAccess.getTransitionAccess().getWhenKeyword_2());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1223:1: ( (lv_event_3_0= RULE_EVENTENUM ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1224:1: (lv_event_3_0= RULE_EVENTENUM )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1224:1: (lv_event_3_0= RULE_EVENTENUM )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1225:3: lv_event_3_0= RULE_EVENTENUM
            {
            lv_event_3_0=(Token)match(input,RULE_EVENTENUM,FOLLOW_RULE_EVENTENUM_in_ruleTransition2874); 

            			newLeafNode(lv_event_3_0, grammarAccess.getTransitionAccess().getEventEventEnumTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTransitionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"event",
                    		lv_event_3_0, 
                    		"EventEnum");
            	    

            }


            }

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleTransition2891); 

                	newLeafNode(otherlv_4, grammarAccess.getTransitionAccess().getSemicolonKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTransition"


    // $ANTLR start "entryRuleIfExp"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1253:1: entryRuleIfExp returns [EObject current=null] : iv_ruleIfExp= ruleIfExp EOF ;
    public final EObject entryRuleIfExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfExp = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1254:2: (iv_ruleIfExp= ruleIfExp EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1255:2: iv_ruleIfExp= ruleIfExp EOF
            {
             newCompositeNode(grammarAccess.getIfExpRule()); 
            pushFollow(FOLLOW_ruleIfExp_in_entryRuleIfExp2927);
            iv_ruleIfExp=ruleIfExp();

            state._fsp--;

             current =iv_ruleIfExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIfExp2937); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIfExp"


    // $ANTLR start "ruleIfExp"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1262:1: ruleIfExp returns [EObject current=null] : ( ( (lv_block_0_0= ruleCondBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) ) )? ) ;
    public final EObject ruleIfExp() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_block_0_0 = null;

        EObject lv_blocks_2_0 = null;

        EObject lv_defaultBlock_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1265:28: ( ( ( (lv_block_0_0= ruleCondBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) ) )? ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1266:1: ( ( (lv_block_0_0= ruleCondBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) ) )? )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1266:1: ( ( (lv_block_0_0= ruleCondBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) ) )? )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1266:2: ( (lv_block_0_0= ruleCondBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) ) )?
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1266:2: ( (lv_block_0_0= ruleCondBlock ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1267:1: (lv_block_0_0= ruleCondBlock )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1267:1: (lv_block_0_0= ruleCondBlock )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1268:3: lv_block_0_0= ruleCondBlock
            {
             
            	        newCompositeNode(grammarAccess.getIfExpAccess().getBlockCondBlockParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleCondBlock_in_ruleIfExp2983);
            lv_block_0_0=ruleCondBlock();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIfExpRule());
            	        }
                   		set(
                   			current, 
                   			"block",
                    		lv_block_0_0, 
                    		"CondBlock");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1284:2: (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) ) )*
            loop15:
            do {
                int alt15=2;
                int LA15_0 = input.LA(1);

                if ( (LA15_0==48) ) {
                    int LA15_1 = input.LA(2);

                    if ( (LA15_1==49) ) {
                        alt15=1;
                    }


                }


                switch (alt15) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1284:4: otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondBlock ) )
            	    {
            	    otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleIfExp2996); 

            	        	newLeafNode(otherlv_1, grammarAccess.getIfExpAccess().getElseKeyword_1_0());
            	        
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1288:1: ( (lv_blocks_2_0= ruleCondBlock ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1289:1: (lv_blocks_2_0= ruleCondBlock )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1289:1: (lv_blocks_2_0= ruleCondBlock )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1290:3: lv_blocks_2_0= ruleCondBlock
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getIfExpAccess().getBlocksCondBlockParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleCondBlock_in_ruleIfExp3017);
            	    lv_blocks_2_0=ruleCondBlock();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getIfExpRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"blocks",
            	            		lv_blocks_2_0, 
            	            		"CondBlock");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop15;
                }
            } while (true);

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1306:4: (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) ) )?
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( (LA16_0==48) ) {
                alt16=1;
            }
            switch (alt16) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1306:6: otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlock ) )
                    {
                    otherlv_3=(Token)match(input,48,FOLLOW_48_in_ruleIfExp3032); 

                        	newLeafNode(otherlv_3, grammarAccess.getIfExpAccess().getElseKeyword_2_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1310:1: ( (lv_defaultBlock_4_0= ruleBlock ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1311:1: (lv_defaultBlock_4_0= ruleBlock )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1311:1: (lv_defaultBlock_4_0= ruleBlock )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1312:3: lv_defaultBlock_4_0= ruleBlock
                    {
                     
                    	        newCompositeNode(grammarAccess.getIfExpAccess().getDefaultBlockBlockParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleBlock_in_ruleIfExp3053);
                    lv_defaultBlock_4_0=ruleBlock();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getIfExpRule());
                    	        }
                           		set(
                           			current, 
                           			"defaultBlock",
                            		lv_defaultBlock_4_0, 
                            		"Block");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIfExp"


    // $ANTLR start "entryRuleBlock"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1336:1: entryRuleBlock returns [EObject current=null] : iv_ruleBlock= ruleBlock EOF ;
    public final EObject entryRuleBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlock = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1337:2: (iv_ruleBlock= ruleBlock EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1338:2: iv_ruleBlock= ruleBlock EOF
            {
             newCompositeNode(grammarAccess.getBlockRule()); 
            pushFollow(FOLLOW_ruleBlock_in_entryRuleBlock3091);
            iv_ruleBlock=ruleBlock();

            state._fsp--;

             current =iv_ruleBlock; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBlock3101); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBlock"


    // $ANTLR start "ruleBlock"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1345:1: ruleBlock returns [EObject current=null] : (otherlv_0= '{' ( (lv_stms_1_0= ruleAbstractElement ) )* otherlv_2= '}' ) ;
    public final EObject ruleBlock() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_stms_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1348:28: ( (otherlv_0= '{' ( (lv_stms_1_0= ruleAbstractElement ) )* otherlv_2= '}' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1349:1: (otherlv_0= '{' ( (lv_stms_1_0= ruleAbstractElement ) )* otherlv_2= '}' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1349:1: (otherlv_0= '{' ( (lv_stms_1_0= ruleAbstractElement ) )* otherlv_2= '}' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1349:3: otherlv_0= '{' ( (lv_stms_1_0= ruleAbstractElement ) )* otherlv_2= '}'
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleBlock3138); 

                	newLeafNode(otherlv_0, grammarAccess.getBlockAccess().getLeftCurlyBracketKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1353:1: ( (lv_stms_1_0= ruleAbstractElement ) )*
            loop17:
            do {
                int alt17=2;
                int LA17_0 = input.LA(1);

                if ( ((LA17_0>=RULE_ID && LA17_0<=RULE_ML_COMMENT)||LA17_0==28||(LA17_0>=30 && LA17_0<=31)||(LA17_0>=34 && LA17_0<=36)||LA17_0==39||LA17_0==43||LA17_0==45||(LA17_0>=49 && LA17_0<=50)||(LA17_0>=52 && LA17_0<=53)) ) {
                    alt17=1;
                }


                switch (alt17) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1354:1: (lv_stms_1_0= ruleAbstractElement )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1354:1: (lv_stms_1_0= ruleAbstractElement )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1355:3: lv_stms_1_0= ruleAbstractElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBlockAccess().getStmsAbstractElementParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractElement_in_ruleBlock3159);
            	    lv_stms_1_0=ruleAbstractElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBlockRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"stms",
            	            		lv_stms_1_0, 
            	            		"AbstractElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop17;
                }
            } while (true);

            otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleBlock3172); 

                	newLeafNode(otherlv_2, grammarAccess.getBlockAccess().getRightCurlyBracketKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBlock"


    // $ANTLR start "entryRuleCondBlock"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1383:1: entryRuleCondBlock returns [EObject current=null] : iv_ruleCondBlock= ruleCondBlock EOF ;
    public final EObject entryRuleCondBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCondBlock = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1384:2: (iv_ruleCondBlock= ruleCondBlock EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1385:2: iv_ruleCondBlock= ruleCondBlock EOF
            {
             newCompositeNode(grammarAccess.getCondBlockRule()); 
            pushFollow(FOLLOW_ruleCondBlock_in_entryRuleCondBlock3208);
            iv_ruleCondBlock=ruleCondBlock();

            state._fsp--;

             current =iv_ruleCondBlock; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCondBlock3218); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCondBlock"


    // $ANTLR start "ruleCondBlock"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1392:1: ruleCondBlock returns [EObject current=null] : (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlock ) ) ) ;
    public final EObject ruleCondBlock() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_cond_1_0 = null;

        EObject lv_action_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1395:28: ( (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlock ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1396:1: (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlock ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1396:1: (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlock ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1396:3: otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlock ) )
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleCondBlock3255); 

                	newLeafNode(otherlv_0, grammarAccess.getCondBlockAccess().getIfKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1400:1: ( (lv_cond_1_0= ruleTerminalBoolExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1401:1: (lv_cond_1_0= ruleTerminalBoolExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1401:1: (lv_cond_1_0= ruleTerminalBoolExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1402:3: lv_cond_1_0= ruleTerminalBoolExpression
            {
             
            	        newCompositeNode(grammarAccess.getCondBlockAccess().getCondTerminalBoolExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleTerminalBoolExpression_in_ruleCondBlock3276);
            lv_cond_1_0=ruleTerminalBoolExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCondBlockRule());
            	        }
                   		set(
                   			current, 
                   			"cond",
                    		lv_cond_1_0, 
                    		"TerminalBoolExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1418:2: ( (lv_action_2_0= ruleBlock ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1419:1: (lv_action_2_0= ruleBlock )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1419:1: (lv_action_2_0= ruleBlock )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1420:3: lv_action_2_0= ruleBlock
            {
             
            	        newCompositeNode(grammarAccess.getCondBlockAccess().getActionBlockParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleBlock_in_ruleCondBlock3297);
            lv_action_2_0=ruleBlock();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCondBlockRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_2_0, 
                    		"Block");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCondBlock"


    // $ANTLR start "entryRuleIfStateExp"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1444:1: entryRuleIfStateExp returns [EObject current=null] : iv_ruleIfStateExp= ruleIfStateExp EOF ;
    public final EObject entryRuleIfStateExp() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIfStateExp = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1445:2: (iv_ruleIfStateExp= ruleIfStateExp EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1446:2: iv_ruleIfStateExp= ruleIfStateExp EOF
            {
             newCompositeNode(grammarAccess.getIfStateExpRule()); 
            pushFollow(FOLLOW_ruleIfStateExp_in_entryRuleIfStateExp3333);
            iv_ruleIfStateExp=ruleIfStateExp();

            state._fsp--;

             current =iv_ruleIfStateExp; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIfStateExp3343); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIfStateExp"


    // $ANTLR start "ruleIfStateExp"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1453:1: ruleIfStateExp returns [EObject current=null] : ( ( (lv_block_0_0= ruleCondStateBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) ) )? ) ;
    public final EObject ruleIfStateExp() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_block_0_0 = null;

        EObject lv_blocks_2_0 = null;

        EObject lv_defaultBlock_4_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1456:28: ( ( ( (lv_block_0_0= ruleCondStateBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) ) )? ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1457:1: ( ( (lv_block_0_0= ruleCondStateBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) ) )? )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1457:1: ( ( (lv_block_0_0= ruleCondStateBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) ) )? )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1457:2: ( (lv_block_0_0= ruleCondStateBlock ) ) (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) ) )* (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) ) )?
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1457:2: ( (lv_block_0_0= ruleCondStateBlock ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1458:1: (lv_block_0_0= ruleCondStateBlock )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1458:1: (lv_block_0_0= ruleCondStateBlock )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1459:3: lv_block_0_0= ruleCondStateBlock
            {
             
            	        newCompositeNode(grammarAccess.getIfStateExpAccess().getBlockCondStateBlockParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleCondStateBlock_in_ruleIfStateExp3389);
            lv_block_0_0=ruleCondStateBlock();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIfStateExpRule());
            	        }
                   		set(
                   			current, 
                   			"block",
                    		lv_block_0_0, 
                    		"CondStateBlock");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1475:2: (otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) ) )*
            loop18:
            do {
                int alt18=2;
                int LA18_0 = input.LA(1);

                if ( (LA18_0==48) ) {
                    int LA18_1 = input.LA(2);

                    if ( (LA18_1==49) ) {
                        alt18=1;
                    }


                }


                switch (alt18) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1475:4: otherlv_1= 'else' ( (lv_blocks_2_0= ruleCondStateBlock ) )
            	    {
            	    otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleIfStateExp3402); 

            	        	newLeafNode(otherlv_1, grammarAccess.getIfStateExpAccess().getElseKeyword_1_0());
            	        
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1479:1: ( (lv_blocks_2_0= ruleCondStateBlock ) )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1480:1: (lv_blocks_2_0= ruleCondStateBlock )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1480:1: (lv_blocks_2_0= ruleCondStateBlock )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1481:3: lv_blocks_2_0= ruleCondStateBlock
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getIfStateExpAccess().getBlocksCondStateBlockParserRuleCall_1_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleCondStateBlock_in_ruleIfStateExp3423);
            	    lv_blocks_2_0=ruleCondStateBlock();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getIfStateExpRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"blocks",
            	            		lv_blocks_2_0, 
            	            		"CondStateBlock");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop18;
                }
            } while (true);

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1497:4: (otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) ) )?
            int alt19=2;
            int LA19_0 = input.LA(1);

            if ( (LA19_0==48) ) {
                alt19=1;
            }
            switch (alt19) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1497:6: otherlv_3= 'else' ( (lv_defaultBlock_4_0= ruleBlockState ) )
                    {
                    otherlv_3=(Token)match(input,48,FOLLOW_48_in_ruleIfStateExp3438); 

                        	newLeafNode(otherlv_3, grammarAccess.getIfStateExpAccess().getElseKeyword_2_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1501:1: ( (lv_defaultBlock_4_0= ruleBlockState ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1502:1: (lv_defaultBlock_4_0= ruleBlockState )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1502:1: (lv_defaultBlock_4_0= ruleBlockState )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1503:3: lv_defaultBlock_4_0= ruleBlockState
                    {
                     
                    	        newCompositeNode(grammarAccess.getIfStateExpAccess().getDefaultBlockBlockStateParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleBlockState_in_ruleIfStateExp3459);
                    lv_defaultBlock_4_0=ruleBlockState();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getIfStateExpRule());
                    	        }
                           		set(
                           			current, 
                           			"defaultBlock",
                            		lv_defaultBlock_4_0, 
                            		"BlockState");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIfStateExp"


    // $ANTLR start "entryRuleCondStateBlock"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1527:1: entryRuleCondStateBlock returns [EObject current=null] : iv_ruleCondStateBlock= ruleCondStateBlock EOF ;
    public final EObject entryRuleCondStateBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCondStateBlock = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1528:2: (iv_ruleCondStateBlock= ruleCondStateBlock EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1529:2: iv_ruleCondStateBlock= ruleCondStateBlock EOF
            {
             newCompositeNode(grammarAccess.getCondStateBlockRule()); 
            pushFollow(FOLLOW_ruleCondStateBlock_in_entryRuleCondStateBlock3497);
            iv_ruleCondStateBlock=ruleCondStateBlock();

            state._fsp--;

             current =iv_ruleCondStateBlock; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCondStateBlock3507); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCondStateBlock"


    // $ANTLR start "ruleCondStateBlock"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1536:1: ruleCondStateBlock returns [EObject current=null] : (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlockState ) ) ) ;
    public final EObject ruleCondStateBlock() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_cond_1_0 = null;

        EObject lv_action_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1539:28: ( (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlockState ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1540:1: (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlockState ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1540:1: (otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlockState ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1540:3: otherlv_0= 'if' ( (lv_cond_1_0= ruleTerminalBoolExpression ) ) ( (lv_action_2_0= ruleBlockState ) )
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleCondStateBlock3544); 

                	newLeafNode(otherlv_0, grammarAccess.getCondStateBlockAccess().getIfKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1544:1: ( (lv_cond_1_0= ruleTerminalBoolExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1545:1: (lv_cond_1_0= ruleTerminalBoolExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1545:1: (lv_cond_1_0= ruleTerminalBoolExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1546:3: lv_cond_1_0= ruleTerminalBoolExpression
            {
             
            	        newCompositeNode(grammarAccess.getCondStateBlockAccess().getCondTerminalBoolExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleTerminalBoolExpression_in_ruleCondStateBlock3565);
            lv_cond_1_0=ruleTerminalBoolExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCondStateBlockRule());
            	        }
                   		set(
                   			current, 
                   			"cond",
                    		lv_cond_1_0, 
                    		"TerminalBoolExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1562:2: ( (lv_action_2_0= ruleBlockState ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1563:1: (lv_action_2_0= ruleBlockState )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1563:1: (lv_action_2_0= ruleBlockState )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1564:3: lv_action_2_0= ruleBlockState
            {
             
            	        newCompositeNode(grammarAccess.getCondStateBlockAccess().getActionBlockStateParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleBlockState_in_ruleCondStateBlock3586);
            lv_action_2_0=ruleBlockState();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCondStateBlockRule());
            	        }
                   		set(
                   			current, 
                   			"action",
                    		lv_action_2_0, 
                    		"BlockState");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCondStateBlock"


    // $ANTLR start "entryRuleBlockState"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1588:1: entryRuleBlockState returns [EObject current=null] : iv_ruleBlockState= ruleBlockState EOF ;
    public final EObject entryRuleBlockState() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBlockState = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1589:2: (iv_ruleBlockState= ruleBlockState EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1590:2: iv_ruleBlockState= ruleBlockState EOF
            {
             newCompositeNode(grammarAccess.getBlockStateRule()); 
            pushFollow(FOLLOW_ruleBlockState_in_entryRuleBlockState3622);
            iv_ruleBlockState=ruleBlockState();

            state._fsp--;

             current =iv_ruleBlockState; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBlockState3632); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBlockState"


    // $ANTLR start "ruleBlockState"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1597:1: ruleBlockState returns [EObject current=null] : (otherlv_0= '{' ( (lv_sta_1_0= ruleStateAbstractElement ) )* otherlv_2= '}' ) ;
    public final EObject ruleBlockState() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_sta_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1600:28: ( (otherlv_0= '{' ( (lv_sta_1_0= ruleStateAbstractElement ) )* otherlv_2= '}' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1601:1: (otherlv_0= '{' ( (lv_sta_1_0= ruleStateAbstractElement ) )* otherlv_2= '}' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1601:1: (otherlv_0= '{' ( (lv_sta_1_0= ruleStateAbstractElement ) )* otherlv_2= '}' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1601:3: otherlv_0= '{' ( (lv_sta_1_0= ruleStateAbstractElement ) )* otherlv_2= '}'
            {
            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleBlockState3669); 

                	newLeafNode(otherlv_0, grammarAccess.getBlockStateAccess().getLeftCurlyBracketKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1605:1: ( (lv_sta_1_0= ruleStateAbstractElement ) )*
            loop20:
            do {
                int alt20=2;
                int LA20_0 = input.LA(1);

                if ( ((LA20_0>=RULE_ID && LA20_0<=RULE_ML_COMMENT)||LA20_0==28||(LA20_0>=30 && LA20_0<=31)||(LA20_0>=34 && LA20_0<=36)||LA20_0==39||LA20_0==43||(LA20_0>=45 && LA20_0<=46)||(LA20_0>=49 && LA20_0<=50)||(LA20_0>=52 && LA20_0<=54)) ) {
                    alt20=1;
                }


                switch (alt20) {
            	case 1 :
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1606:1: (lv_sta_1_0= ruleStateAbstractElement )
            	    {
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1606:1: (lv_sta_1_0= ruleStateAbstractElement )
            	    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1607:3: lv_sta_1_0= ruleStateAbstractElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getBlockStateAccess().getStaStateAbstractElementParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleStateAbstractElement_in_ruleBlockState3690);
            	    lv_sta_1_0=ruleStateAbstractElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getBlockStateRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"sta",
            	            		lv_sta_1_0, 
            	            		"StateAbstractElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop20;
                }
            } while (true);

            otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleBlockState3703); 

                	newLeafNode(otherlv_2, grammarAccess.getBlockStateAccess().getRightCurlyBracketKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBlockState"


    // $ANTLR start "entryRuleBoolExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1635:1: entryRuleBoolExpression returns [EObject current=null] : iv_ruleBoolExpression= ruleBoolExpression EOF ;
    public final EObject entryRuleBoolExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBoolExpression = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1636:2: (iv_ruleBoolExpression= ruleBoolExpression EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1637:2: iv_ruleBoolExpression= ruleBoolExpression EOF
            {
             newCompositeNode(grammarAccess.getBoolExpressionRule()); 
            pushFollow(FOLLOW_ruleBoolExpression_in_entryRuleBoolExpression3739);
            iv_ruleBoolExpression=ruleBoolExpression();

            state._fsp--;

             current =iv_ruleBoolExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBoolExpression3749); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBoolExpression"


    // $ANTLR start "ruleBoolExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1644:1: ruleBoolExpression returns [EObject current=null] : (this_TerminalBoolExpression_0= ruleTerminalBoolExpression ( () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) ) )? ) ;
    public final EObject ruleBoolExpression() throws RecognitionException {
        EObject current = null;

        Token lv_op_2_0=null;
        EObject this_TerminalBoolExpression_0 = null;

        EObject lv_right_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1647:28: ( (this_TerminalBoolExpression_0= ruleTerminalBoolExpression ( () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) ) )? ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1648:1: (this_TerminalBoolExpression_0= ruleTerminalBoolExpression ( () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) ) )? )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1648:1: (this_TerminalBoolExpression_0= ruleTerminalBoolExpression ( () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) ) )? )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1649:5: this_TerminalBoolExpression_0= ruleTerminalBoolExpression ( () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) ) )?
            {
             
                    newCompositeNode(grammarAccess.getBoolExpressionAccess().getTerminalBoolExpressionParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleTerminalBoolExpression_in_ruleBoolExpression3796);
            this_TerminalBoolExpression_0=ruleTerminalBoolExpression();

            state._fsp--;

             
                    current = this_TerminalBoolExpression_0; 
                    afterParserOrEnumRuleCall();
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1657:1: ( () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==RULE_LOGIC_WORD) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1657:2: () ( (lv_op_2_0= RULE_LOGIC_WORD ) ) ( (lv_right_3_0= ruleBoolExpression ) )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1657:2: ()
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1658:5: 
                    {

                            current = forceCreateModelElementAndSet(
                                grammarAccess.getBoolExpressionAccess().getOperationBoolLeftAction_1_0(),
                                current);
                        

                    }

                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1663:2: ( (lv_op_2_0= RULE_LOGIC_WORD ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1664:1: (lv_op_2_0= RULE_LOGIC_WORD )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1664:1: (lv_op_2_0= RULE_LOGIC_WORD )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1665:3: lv_op_2_0= RULE_LOGIC_WORD
                    {
                    lv_op_2_0=(Token)match(input,RULE_LOGIC_WORD,FOLLOW_RULE_LOGIC_WORD_in_ruleBoolExpression3822); 

                    			newLeafNode(lv_op_2_0, grammarAccess.getBoolExpressionAccess().getOpLOGIC_WORDTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBoolExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"op",
                            		lv_op_2_0, 
                            		"LOGIC_WORD");
                    	    

                    }


                    }

                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1681:2: ( (lv_right_3_0= ruleBoolExpression ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1682:1: (lv_right_3_0= ruleBoolExpression )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1682:1: (lv_right_3_0= ruleBoolExpression )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1683:3: lv_right_3_0= ruleBoolExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getBoolExpressionAccess().getRightBoolExpressionParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleBoolExpression_in_ruleBoolExpression3848);
                    lv_right_3_0=ruleBoolExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBoolExpressionRule());
                    	        }
                           		set(
                           			current, 
                           			"right",
                            		lv_right_3_0, 
                            		"BoolExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBoolExpression"


    // $ANTLR start "entryRuleTerminalBoolExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1707:1: entryRuleTerminalBoolExpression returns [EObject current=null] : iv_ruleTerminalBoolExpression= ruleTerminalBoolExpression EOF ;
    public final EObject entryRuleTerminalBoolExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTerminalBoolExpression = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1708:2: (iv_ruleTerminalBoolExpression= ruleTerminalBoolExpression EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1709:2: iv_ruleTerminalBoolExpression= ruleTerminalBoolExpression EOF
            {
             newCompositeNode(grammarAccess.getTerminalBoolExpressionRule()); 
            pushFollow(FOLLOW_ruleTerminalBoolExpression_in_entryRuleTerminalBoolExpression3886);
            iv_ruleTerminalBoolExpression=ruleTerminalBoolExpression();

            state._fsp--;

             current =iv_ruleTerminalBoolExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTerminalBoolExpression3896); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTerminalBoolExpression"


    // $ANTLR start "ruleTerminalBoolExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1716:1: ruleTerminalBoolExpression returns [EObject current=null] : ( (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' ) | this_BoolLiteral_3= ruleBoolLiteral | this_CompareExpression_4= ruleCompareExpression | this_NegExpression_5= ruleNegExpression | this_Literal_6= ruleLiteral ) ;
    public final EObject ruleTerminalBoolExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_BoolExpression_1 = null;

        EObject this_BoolLiteral_3 = null;

        EObject this_CompareExpression_4 = null;

        EObject this_NegExpression_5 = null;

        EObject this_Literal_6 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1719:28: ( ( (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' ) | this_BoolLiteral_3= ruleBoolLiteral | this_CompareExpression_4= ruleCompareExpression | this_NegExpression_5= ruleNegExpression | this_Literal_6= ruleLiteral ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1720:1: ( (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' ) | this_BoolLiteral_3= ruleBoolLiteral | this_CompareExpression_4= ruleCompareExpression | this_NegExpression_5= ruleNegExpression | this_Literal_6= ruleLiteral )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1720:1: ( (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' ) | this_BoolLiteral_3= ruleBoolLiteral | this_CompareExpression_4= ruleCompareExpression | this_NegExpression_5= ruleNegExpression | this_Literal_6= ruleLiteral )
            int alt22=5;
            alt22 = dfa22.predict(input);
            switch (alt22) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1720:2: (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1720:2: (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1720:4: otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')'
                    {
                    otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleTerminalBoolExpression3934); 

                        	newLeafNode(otherlv_0, grammarAccess.getTerminalBoolExpressionAccess().getLeftParenthesisKeyword_0_0());
                        
                     
                            newCompositeNode(grammarAccess.getTerminalBoolExpressionAccess().getBoolExpressionParserRuleCall_0_1()); 
                        
                    pushFollow(FOLLOW_ruleBoolExpression_in_ruleTerminalBoolExpression3956);
                    this_BoolExpression_1=ruleBoolExpression();

                    state._fsp--;

                     
                            current = this_BoolExpression_1; 
                            afterParserOrEnumRuleCall();
                        
                    otherlv_2=(Token)match(input,42,FOLLOW_42_in_ruleTerminalBoolExpression3967); 

                        	newLeafNode(otherlv_2, grammarAccess.getTerminalBoolExpressionAccess().getRightParenthesisKeyword_0_2());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1739:5: this_BoolLiteral_3= ruleBoolLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getTerminalBoolExpressionAccess().getBoolLiteralParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleBoolLiteral_in_ruleTerminalBoolExpression3996);
                    this_BoolLiteral_3=ruleBoolLiteral();

                    state._fsp--;

                     
                            current = this_BoolLiteral_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1749:5: this_CompareExpression_4= ruleCompareExpression
                    {
                     
                            newCompositeNode(grammarAccess.getTerminalBoolExpressionAccess().getCompareExpressionParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleCompareExpression_in_ruleTerminalBoolExpression4023);
                    this_CompareExpression_4=ruleCompareExpression();

                    state._fsp--;

                     
                            current = this_CompareExpression_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1759:5: this_NegExpression_5= ruleNegExpression
                    {
                     
                            newCompositeNode(grammarAccess.getTerminalBoolExpressionAccess().getNegExpressionParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleNegExpression_in_ruleTerminalBoolExpression4050);
                    this_NegExpression_5=ruleNegExpression();

                    state._fsp--;

                     
                            current = this_NegExpression_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1769:5: this_Literal_6= ruleLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getTerminalBoolExpressionAccess().getLiteralParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleLiteral_in_ruleTerminalBoolExpression4077);
                    this_Literal_6=ruleLiteral();

                    state._fsp--;

                     
                            current = this_Literal_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTerminalBoolExpression"


    // $ANTLR start "entryRuleCompareExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1785:1: entryRuleCompareExpression returns [EObject current=null] : iv_ruleCompareExpression= ruleCompareExpression EOF ;
    public final EObject entryRuleCompareExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompareExpression = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1786:2: (iv_ruleCompareExpression= ruleCompareExpression EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1787:2: iv_ruleCompareExpression= ruleCompareExpression EOF
            {
             newCompositeNode(grammarAccess.getCompareExpressionRule()); 
            pushFollow(FOLLOW_ruleCompareExpression_in_entryRuleCompareExpression4112);
            iv_ruleCompareExpression=ruleCompareExpression();

            state._fsp--;

             current =iv_ruleCompareExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCompareExpression4122); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCompareExpression"


    // $ANTLR start "ruleCompareExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1794:1: ruleCompareExpression returns [EObject current=null] : ( ( (lv_left_0_0= ruleLiteralAbs ) ) ( (lv_op_1_0= RULE_COMPARE ) ) ( (lv_right_2_0= ruleLiteralAbs ) ) ) ;
    public final EObject ruleCompareExpression() throws RecognitionException {
        EObject current = null;

        Token lv_op_1_0=null;
        EObject lv_left_0_0 = null;

        EObject lv_right_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1797:28: ( ( ( (lv_left_0_0= ruleLiteralAbs ) ) ( (lv_op_1_0= RULE_COMPARE ) ) ( (lv_right_2_0= ruleLiteralAbs ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1798:1: ( ( (lv_left_0_0= ruleLiteralAbs ) ) ( (lv_op_1_0= RULE_COMPARE ) ) ( (lv_right_2_0= ruleLiteralAbs ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1798:1: ( ( (lv_left_0_0= ruleLiteralAbs ) ) ( (lv_op_1_0= RULE_COMPARE ) ) ( (lv_right_2_0= ruleLiteralAbs ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1798:2: ( (lv_left_0_0= ruleLiteralAbs ) ) ( (lv_op_1_0= RULE_COMPARE ) ) ( (lv_right_2_0= ruleLiteralAbs ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1798:2: ( (lv_left_0_0= ruleLiteralAbs ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1799:1: (lv_left_0_0= ruleLiteralAbs )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1799:1: (lv_left_0_0= ruleLiteralAbs )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1800:3: lv_left_0_0= ruleLiteralAbs
            {
             
            	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getLeftLiteralAbsParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleLiteralAbs_in_ruleCompareExpression4168);
            lv_left_0_0=ruleLiteralAbs();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
            	        }
                   		set(
                   			current, 
                   			"left",
                    		lv_left_0_0, 
                    		"LiteralAbs");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1816:2: ( (lv_op_1_0= RULE_COMPARE ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1817:1: (lv_op_1_0= RULE_COMPARE )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1817:1: (lv_op_1_0= RULE_COMPARE )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1818:3: lv_op_1_0= RULE_COMPARE
            {
            lv_op_1_0=(Token)match(input,RULE_COMPARE,FOLLOW_RULE_COMPARE_in_ruleCompareExpression4185); 

            			newLeafNode(lv_op_1_0, grammarAccess.getCompareExpressionAccess().getOpCOMPARETerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getCompareExpressionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"op",
                    		lv_op_1_0, 
                    		"COMPARE");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1834:2: ( (lv_right_2_0= ruleLiteralAbs ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1835:1: (lv_right_2_0= ruleLiteralAbs )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1835:1: (lv_right_2_0= ruleLiteralAbs )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1836:3: lv_right_2_0= ruleLiteralAbs
            {
             
            	        newCompositeNode(grammarAccess.getCompareExpressionAccess().getRightLiteralAbsParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleLiteralAbs_in_ruleCompareExpression4211);
            lv_right_2_0=ruleLiteralAbs();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCompareExpressionRule());
            	        }
                   		set(
                   			current, 
                   			"right",
                    		lv_right_2_0, 
                    		"LiteralAbs");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCompareExpression"


    // $ANTLR start "entryRuleNegExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1860:1: entryRuleNegExpression returns [EObject current=null] : iv_ruleNegExpression= ruleNegExpression EOF ;
    public final EObject entryRuleNegExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNegExpression = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1861:2: (iv_ruleNegExpression= ruleNegExpression EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1862:2: iv_ruleNegExpression= ruleNegExpression EOF
            {
             newCompositeNode(grammarAccess.getNegExpressionRule()); 
            pushFollow(FOLLOW_ruleNegExpression_in_entryRuleNegExpression4247);
            iv_ruleNegExpression=ruleNegExpression();

            state._fsp--;

             current =iv_ruleNegExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNegExpression4257); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNegExpression"


    // $ANTLR start "ruleNegExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1869:1: ruleNegExpression returns [EObject current=null] : ( ( (lv_op_0_0= RULE_NEGATION ) ) ( (lv_obj_1_0= ruleTerminalBoolExpression ) ) ) ;
    public final EObject ruleNegExpression() throws RecognitionException {
        EObject current = null;

        Token lv_op_0_0=null;
        EObject lv_obj_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1872:28: ( ( ( (lv_op_0_0= RULE_NEGATION ) ) ( (lv_obj_1_0= ruleTerminalBoolExpression ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1873:1: ( ( (lv_op_0_0= RULE_NEGATION ) ) ( (lv_obj_1_0= ruleTerminalBoolExpression ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1873:1: ( ( (lv_op_0_0= RULE_NEGATION ) ) ( (lv_obj_1_0= ruleTerminalBoolExpression ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1873:2: ( (lv_op_0_0= RULE_NEGATION ) ) ( (lv_obj_1_0= ruleTerminalBoolExpression ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1873:2: ( (lv_op_0_0= RULE_NEGATION ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1874:1: (lv_op_0_0= RULE_NEGATION )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1874:1: (lv_op_0_0= RULE_NEGATION )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1875:3: lv_op_0_0= RULE_NEGATION
            {
            lv_op_0_0=(Token)match(input,RULE_NEGATION,FOLLOW_RULE_NEGATION_in_ruleNegExpression4299); 

            			newLeafNode(lv_op_0_0, grammarAccess.getNegExpressionAccess().getOpNEGATIONTerminalRuleCall_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNegExpressionRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"op",
                    		lv_op_0_0, 
                    		"NEGATION");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1891:2: ( (lv_obj_1_0= ruleTerminalBoolExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1892:1: (lv_obj_1_0= ruleTerminalBoolExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1892:1: (lv_obj_1_0= ruleTerminalBoolExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1893:3: lv_obj_1_0= ruleTerminalBoolExpression
            {
             
            	        newCompositeNode(grammarAccess.getNegExpressionAccess().getObjTerminalBoolExpressionParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleTerminalBoolExpression_in_ruleNegExpression4325);
            lv_obj_1_0=ruleTerminalBoolExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getNegExpressionRule());
            	        }
                   		set(
                   			current, 
                   			"obj",
                    		lv_obj_1_0, 
                    		"TerminalBoolExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNegExpression"


    // $ANTLR start "entryRuleMathExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1917:1: entryRuleMathExpression returns [EObject current=null] : iv_ruleMathExpression= ruleMathExpression EOF ;
    public final EObject entryRuleMathExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMathExpression = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1918:2: (iv_ruleMathExpression= ruleMathExpression EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1919:2: iv_ruleMathExpression= ruleMathExpression EOF
            {
             newCompositeNode(grammarAccess.getMathExpressionRule()); 
            pushFollow(FOLLOW_ruleMathExpression_in_entryRuleMathExpression4361);
            iv_ruleMathExpression=ruleMathExpression();

            state._fsp--;

             current =iv_ruleMathExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMathExpression4371); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMathExpression"


    // $ANTLR start "ruleMathExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1926:1: ruleMathExpression returns [EObject current=null] : (this_MathTerminal_0= ruleMathTerminal ( () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) ) )? ) ;
    public final EObject ruleMathExpression() throws RecognitionException {
        EObject current = null;

        Token lv_op_2_0=null;
        EObject this_MathTerminal_0 = null;

        EObject lv_right_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1929:28: ( (this_MathTerminal_0= ruleMathTerminal ( () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) ) )? ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1930:1: (this_MathTerminal_0= ruleMathTerminal ( () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) ) )? )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1930:1: (this_MathTerminal_0= ruleMathTerminal ( () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) ) )? )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1931:5: this_MathTerminal_0= ruleMathTerminal ( () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) ) )?
            {
             
                    newCompositeNode(grammarAccess.getMathExpressionAccess().getMathTerminalParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleMathTerminal_in_ruleMathExpression4418);
            this_MathTerminal_0=ruleMathTerminal();

            state._fsp--;

             
                    current = this_MathTerminal_0; 
                    afterParserOrEnumRuleCall();
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1939:1: ( () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) ) )?
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( (LA23_0==RULE_MATH) ) {
                alt23=1;
            }
            switch (alt23) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1939:2: () ( (lv_op_2_0= RULE_MATH ) ) ( (lv_right_3_0= ruleMathExpression ) )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1939:2: ()
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1940:5: 
                    {

                            current = forceCreateModelElementAndSet(
                                grammarAccess.getMathExpressionAccess().getOperationLeftAction_1_0(),
                                current);
                        

                    }

                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1945:2: ( (lv_op_2_0= RULE_MATH ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1946:1: (lv_op_2_0= RULE_MATH )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1946:1: (lv_op_2_0= RULE_MATH )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1947:3: lv_op_2_0= RULE_MATH
                    {
                    lv_op_2_0=(Token)match(input,RULE_MATH,FOLLOW_RULE_MATH_in_ruleMathExpression4444); 

                    			newLeafNode(lv_op_2_0, grammarAccess.getMathExpressionAccess().getOpMATHTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getMathExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"op",
                            		lv_op_2_0, 
                            		"MATH");
                    	    

                    }


                    }

                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1963:2: ( (lv_right_3_0= ruleMathExpression ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1964:1: (lv_right_3_0= ruleMathExpression )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1964:1: (lv_right_3_0= ruleMathExpression )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1965:3: lv_right_3_0= ruleMathExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getMathExpressionAccess().getRightMathExpressionParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleMathExpression_in_ruleMathExpression4470);
                    lv_right_3_0=ruleMathExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getMathExpressionRule());
                    	        }
                           		set(
                           			current, 
                           			"right",
                            		lv_right_3_0, 
                            		"MathExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMathExpression"


    // $ANTLR start "entryRuleMathTerminal"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1989:1: entryRuleMathTerminal returns [EObject current=null] : iv_ruleMathTerminal= ruleMathTerminal EOF ;
    public final EObject entryRuleMathTerminal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMathTerminal = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1990:2: (iv_ruleMathTerminal= ruleMathTerminal EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1991:2: iv_ruleMathTerminal= ruleMathTerminal EOF
            {
             newCompositeNode(grammarAccess.getMathTerminalRule()); 
            pushFollow(FOLLOW_ruleMathTerminal_in_entryRuleMathTerminal4508);
            iv_ruleMathTerminal=ruleMathTerminal();

            state._fsp--;

             current =iv_ruleMathTerminal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMathTerminal4518); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMathTerminal"


    // $ANTLR start "ruleMathTerminal"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:1998:1: ruleMathTerminal returns [EObject current=null] : ( (otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')' ) | this_Literal_3= ruleLiteral ) ;
    public final EObject ruleMathTerminal() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_MathExpression_1 = null;

        EObject this_Literal_3 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2001:28: ( ( (otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')' ) | this_Literal_3= ruleLiteral ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2002:1: ( (otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')' ) | this_Literal_3= ruleLiteral )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2002:1: ( (otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')' ) | this_Literal_3= ruleLiteral )
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==40) ) {
                alt24=1;
            }
            else if ( (LA24_0==RULE_ID||LA24_0==RULE_INT||(LA24_0>=RULE_NULL && LA24_0<=RULE_SESSION)||LA24_0==RULE_DOUBLE) ) {
                alt24=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }
            switch (alt24) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2002:2: (otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')' )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2002:2: (otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')' )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2002:4: otherlv_0= '(' this_MathExpression_1= ruleMathExpression otherlv_2= ')'
                    {
                    otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleMathTerminal4556); 

                        	newLeafNode(otherlv_0, grammarAccess.getMathTerminalAccess().getLeftParenthesisKeyword_0_0());
                        
                     
                            newCompositeNode(grammarAccess.getMathTerminalAccess().getMathExpressionParserRuleCall_0_1()); 
                        
                    pushFollow(FOLLOW_ruleMathExpression_in_ruleMathTerminal4578);
                    this_MathExpression_1=ruleMathExpression();

                    state._fsp--;

                     
                            current = this_MathExpression_1; 
                            afterParserOrEnumRuleCall();
                        
                    otherlv_2=(Token)match(input,42,FOLLOW_42_in_ruleMathTerminal4589); 

                        	newLeafNode(otherlv_2, grammarAccess.getMathTerminalAccess().getRightParenthesisKeyword_0_2());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2021:5: this_Literal_3= ruleLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getMathTerminalAccess().getLiteralParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleLiteral_in_ruleMathTerminal4618);
                    this_Literal_3=ruleLiteral();

                    state._fsp--;

                     
                            current = this_Literal_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMathTerminal"


    // $ANTLR start "entryRuleConcatenationExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2037:1: entryRuleConcatenationExpression returns [EObject current=null] : iv_ruleConcatenationExpression= ruleConcatenationExpression EOF ;
    public final EObject entryRuleConcatenationExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcatenationExpression = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2038:2: (iv_ruleConcatenationExpression= ruleConcatenationExpression EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2039:2: iv_ruleConcatenationExpression= ruleConcatenationExpression EOF
            {
             newCompositeNode(grammarAccess.getConcatenationExpressionRule()); 
            pushFollow(FOLLOW_ruleConcatenationExpression_in_entryRuleConcatenationExpression4653);
            iv_ruleConcatenationExpression=ruleConcatenationExpression();

            state._fsp--;

             current =iv_ruleConcatenationExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConcatenationExpression4663); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcatenationExpression"


    // $ANTLR start "ruleConcatenationExpression"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2046:1: ruleConcatenationExpression returns [EObject current=null] : (this_ConcatenationTerminal_0= ruleConcatenationTerminal ( () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) ) )? ) ;
    public final EObject ruleConcatenationExpression() throws RecognitionException {
        EObject current = null;

        Token lv_op_2_0=null;
        EObject this_ConcatenationTerminal_0 = null;

        EObject lv_right_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2049:28: ( (this_ConcatenationTerminal_0= ruleConcatenationTerminal ( () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) ) )? ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2050:1: (this_ConcatenationTerminal_0= ruleConcatenationTerminal ( () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) ) )? )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2050:1: (this_ConcatenationTerminal_0= ruleConcatenationTerminal ( () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) ) )? )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2051:5: this_ConcatenationTerminal_0= ruleConcatenationTerminal ( () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) ) )?
            {
             
                    newCompositeNode(grammarAccess.getConcatenationExpressionAccess().getConcatenationTerminalParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleConcatenationTerminal_in_ruleConcatenationExpression4710);
            this_ConcatenationTerminal_0=ruleConcatenationTerminal();

            state._fsp--;

             
                    current = this_ConcatenationTerminal_0; 
                    afterParserOrEnumRuleCall();
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2059:1: ( () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) ) )?
            int alt25=2;
            int LA25_0 = input.LA(1);

            if ( (LA25_0==RULE_CONCATENATION) ) {
                alt25=1;
            }
            switch (alt25) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2059:2: () ( (lv_op_2_0= RULE_CONCATENATION ) ) ( (lv_right_3_0= ruleConcatenationExpression ) )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2059:2: ()
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2060:5: 
                    {

                            current = forceCreateModelElementAndSet(
                                grammarAccess.getConcatenationExpressionAccess().getConcatenationLeftAction_1_0(),
                                current);
                        

                    }

                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2065:2: ( (lv_op_2_0= RULE_CONCATENATION ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2066:1: (lv_op_2_0= RULE_CONCATENATION )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2066:1: (lv_op_2_0= RULE_CONCATENATION )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2067:3: lv_op_2_0= RULE_CONCATENATION
                    {
                    lv_op_2_0=(Token)match(input,RULE_CONCATENATION,FOLLOW_RULE_CONCATENATION_in_ruleConcatenationExpression4736); 

                    			newLeafNode(lv_op_2_0, grammarAccess.getConcatenationExpressionAccess().getOpCONCATENATIONTerminalRuleCall_1_1_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getConcatenationExpressionRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"op",
                            		lv_op_2_0, 
                            		"CONCATENATION");
                    	    

                    }


                    }

                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2083:2: ( (lv_right_3_0= ruleConcatenationExpression ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2084:1: (lv_right_3_0= ruleConcatenationExpression )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2084:1: (lv_right_3_0= ruleConcatenationExpression )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2085:3: lv_right_3_0= ruleConcatenationExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getConcatenationExpressionAccess().getRightConcatenationExpressionParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleConcatenationExpression4762);
                    lv_right_3_0=ruleConcatenationExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getConcatenationExpressionRule());
                    	        }
                           		set(
                           			current, 
                           			"right",
                            		lv_right_3_0, 
                            		"ConcatenationExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcatenationExpression"


    // $ANTLR start "entryRuleConcatenationTerminal"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2109:1: entryRuleConcatenationTerminal returns [EObject current=null] : iv_ruleConcatenationTerminal= ruleConcatenationTerminal EOF ;
    public final EObject entryRuleConcatenationTerminal() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConcatenationTerminal = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2110:2: (iv_ruleConcatenationTerminal= ruleConcatenationTerminal EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2111:2: iv_ruleConcatenationTerminal= ruleConcatenationTerminal EOF
            {
             newCompositeNode(grammarAccess.getConcatenationTerminalRule()); 
            pushFollow(FOLLOW_ruleConcatenationTerminal_in_entryRuleConcatenationTerminal4800);
            iv_ruleConcatenationTerminal=ruleConcatenationTerminal();

            state._fsp--;

             current =iv_ruleConcatenationTerminal; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleConcatenationTerminal4810); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConcatenationTerminal"


    // $ANTLR start "ruleConcatenationTerminal"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2118:1: ruleConcatenationTerminal returns [EObject current=null] : ( (otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')' ) | this_LiteralAbs_3= ruleLiteralAbs ) ;
    public final EObject ruleConcatenationTerminal() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_ConcatenationExpression_1 = null;

        EObject this_LiteralAbs_3 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2121:28: ( ( (otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')' ) | this_LiteralAbs_3= ruleLiteralAbs ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2122:1: ( (otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')' ) | this_LiteralAbs_3= ruleLiteralAbs )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2122:1: ( (otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')' ) | this_LiteralAbs_3= ruleLiteralAbs )
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==40) ) {
                alt26=1;
            }
            else if ( (LA26_0==RULE_ID||(LA26_0>=RULE_INT && LA26_0<=RULE_STRING)||(LA26_0>=RULE_NULL && LA26_0<=RULE_DOUBLE)) ) {
                alt26=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 26, 0, input);

                throw nvae;
            }
            switch (alt26) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2122:2: (otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')' )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2122:2: (otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')' )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2122:4: otherlv_0= '(' this_ConcatenationExpression_1= ruleConcatenationExpression otherlv_2= ')'
                    {
                    otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleConcatenationTerminal4848); 

                        	newLeafNode(otherlv_0, grammarAccess.getConcatenationTerminalAccess().getLeftParenthesisKeyword_0_0());
                        
                     
                            newCompositeNode(grammarAccess.getConcatenationTerminalAccess().getConcatenationExpressionParserRuleCall_0_1()); 
                        
                    pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleConcatenationTerminal4870);
                    this_ConcatenationExpression_1=ruleConcatenationExpression();

                    state._fsp--;

                     
                            current = this_ConcatenationExpression_1; 
                            afterParserOrEnumRuleCall();
                        
                    otherlv_2=(Token)match(input,42,FOLLOW_42_in_ruleConcatenationTerminal4881); 

                        	newLeafNode(otherlv_2, grammarAccess.getConcatenationTerminalAccess().getRightParenthesisKeyword_0_2());
                        

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2141:5: this_LiteralAbs_3= ruleLiteralAbs
                    {
                     
                            newCompositeNode(grammarAccess.getConcatenationTerminalAccess().getLiteralAbsParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleLiteralAbs_in_ruleConcatenationTerminal4910);
                    this_LiteralAbs_3=ruleLiteralAbs();

                    state._fsp--;

                     
                            current = this_LiteralAbs_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConcatenationTerminal"


    // $ANTLR start "entryRuleStringVariable"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2157:1: entryRuleStringVariable returns [EObject current=null] : iv_ruleStringVariable= ruleStringVariable EOF ;
    public final EObject entryRuleStringVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringVariable = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2158:2: (iv_ruleStringVariable= ruleStringVariable EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2159:2: iv_ruleStringVariable= ruleStringVariable EOF
            {
             newCompositeNode(grammarAccess.getStringVariableRule()); 
            pushFollow(FOLLOW_ruleStringVariable_in_entryRuleStringVariable4945);
            iv_ruleStringVariable=ruleStringVariable();

            state._fsp--;

             current =iv_ruleStringVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringVariable4955); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringVariable"


    // $ANTLR start "ruleStringVariable"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2166:1: ruleStringVariable returns [EObject current=null] : (otherlv_0= 'string' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) ) )? otherlv_4= ';' ) ;
    public final EObject ruleStringVariable() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2169:28: ( (otherlv_0= 'string' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) ) )? otherlv_4= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2170:1: (otherlv_0= 'string' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) ) )? otherlv_4= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2170:1: (otherlv_0= 'string' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) ) )? otherlv_4= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2170:3: otherlv_0= 'string' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) ) )? otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,50,FOLLOW_50_in_ruleStringVariable4992); 

                	newLeafNode(otherlv_0, grammarAccess.getStringVariableAccess().getStringKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2174:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2175:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2175:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2176:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleStringVariable5009); 

            			newLeafNode(lv_name_1_0, grammarAccess.getStringVariableAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStringVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2192:2: (otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) ) )?
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==51) ) {
                alt27=1;
            }
            switch (alt27) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2192:4: otherlv_2= '=' ( (lv_value_3_0= ruleConcatenationExpression ) )
                    {
                    otherlv_2=(Token)match(input,51,FOLLOW_51_in_ruleStringVariable5027); 

                        	newLeafNode(otherlv_2, grammarAccess.getStringVariableAccess().getEqualsSignKeyword_2_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2196:1: ( (lv_value_3_0= ruleConcatenationExpression ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2197:1: (lv_value_3_0= ruleConcatenationExpression )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2197:1: (lv_value_3_0= ruleConcatenationExpression )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2198:3: lv_value_3_0= ruleConcatenationExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getStringVariableAccess().getValueConcatenationExpressionParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleConcatenationExpression_in_ruleStringVariable5048);
                    lv_value_3_0=ruleConcatenationExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStringVariableRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_3_0, 
                            		"ConcatenationExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleStringVariable5062); 

                	newLeafNode(otherlv_4, grammarAccess.getStringVariableAccess().getSemicolonKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringVariable"


    // $ANTLR start "entryRuleNumVariable"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2226:1: entryRuleNumVariable returns [EObject current=null] : iv_ruleNumVariable= ruleNumVariable EOF ;
    public final EObject entryRuleNumVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumVariable = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2227:2: (iv_ruleNumVariable= ruleNumVariable EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2228:2: iv_ruleNumVariable= ruleNumVariable EOF
            {
             newCompositeNode(grammarAccess.getNumVariableRule()); 
            pushFollow(FOLLOW_ruleNumVariable_in_entryRuleNumVariable5098);
            iv_ruleNumVariable=ruleNumVariable();

            state._fsp--;

             current =iv_ruleNumVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumVariable5108); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumVariable"


    // $ANTLR start "ruleNumVariable"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2235:1: ruleNumVariable returns [EObject current=null] : (otherlv_0= 'num' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) ) )? otherlv_4= ';' ) ;
    public final EObject ruleNumVariable() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2238:28: ( (otherlv_0= 'num' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) ) )? otherlv_4= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2239:1: (otherlv_0= 'num' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) ) )? otherlv_4= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2239:1: (otherlv_0= 'num' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) ) )? otherlv_4= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2239:3: otherlv_0= 'num' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) ) )? otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,52,FOLLOW_52_in_ruleNumVariable5145); 

                	newLeafNode(otherlv_0, grammarAccess.getNumVariableAccess().getNumKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2243:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2244:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2244:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2245:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNumVariable5162); 

            			newLeafNode(lv_name_1_0, grammarAccess.getNumVariableAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getNumVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2261:2: (otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==51) ) {
                alt28=1;
            }
            switch (alt28) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2261:4: otherlv_2= '=' ( (lv_value_3_0= ruleMathExpression ) )
                    {
                    otherlv_2=(Token)match(input,51,FOLLOW_51_in_ruleNumVariable5180); 

                        	newLeafNode(otherlv_2, grammarAccess.getNumVariableAccess().getEqualsSignKeyword_2_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2265:1: ( (lv_value_3_0= ruleMathExpression ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2266:1: (lv_value_3_0= ruleMathExpression )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2266:1: (lv_value_3_0= ruleMathExpression )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2267:3: lv_value_3_0= ruleMathExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getNumVariableAccess().getValueMathExpressionParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleMathExpression_in_ruleNumVariable5201);
                    lv_value_3_0=ruleMathExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNumVariableRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_3_0, 
                            		"MathExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleNumVariable5215); 

                	newLeafNode(otherlv_4, grammarAccess.getNumVariableAccess().getSemicolonKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumVariable"


    // $ANTLR start "entryRuleBoolVariable"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2295:1: entryRuleBoolVariable returns [EObject current=null] : iv_ruleBoolVariable= ruleBoolVariable EOF ;
    public final EObject entryRuleBoolVariable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBoolVariable = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2296:2: (iv_ruleBoolVariable= ruleBoolVariable EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2297:2: iv_ruleBoolVariable= ruleBoolVariable EOF
            {
             newCompositeNode(grammarAccess.getBoolVariableRule()); 
            pushFollow(FOLLOW_ruleBoolVariable_in_entryRuleBoolVariable5251);
            iv_ruleBoolVariable=ruleBoolVariable();

            state._fsp--;

             current =iv_ruleBoolVariable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBoolVariable5261); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBoolVariable"


    // $ANTLR start "ruleBoolVariable"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2304:1: ruleBoolVariable returns [EObject current=null] : (otherlv_0= 'boolean' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) ) )? otherlv_4= ';' ) ;
    public final EObject ruleBoolVariable() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2307:28: ( (otherlv_0= 'boolean' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) ) )? otherlv_4= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2308:1: (otherlv_0= 'boolean' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) ) )? otherlv_4= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2308:1: (otherlv_0= 'boolean' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) ) )? otherlv_4= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2308:3: otherlv_0= 'boolean' ( (lv_name_1_0= RULE_ID ) ) (otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) ) )? otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,53,FOLLOW_53_in_ruleBoolVariable5298); 

                	newLeafNode(otherlv_0, grammarAccess.getBoolVariableAccess().getBooleanKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2312:1: ( (lv_name_1_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2313:1: (lv_name_1_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2313:1: (lv_name_1_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2314:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleBoolVariable5315); 

            			newLeafNode(lv_name_1_0, grammarAccess.getBoolVariableAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBoolVariableRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2330:2: (otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) ) )?
            int alt29=2;
            int LA29_0 = input.LA(1);

            if ( (LA29_0==51) ) {
                alt29=1;
            }
            switch (alt29) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2330:4: otherlv_2= '=' ( (lv_value_3_0= ruleBoolExpression ) )
                    {
                    otherlv_2=(Token)match(input,51,FOLLOW_51_in_ruleBoolVariable5333); 

                        	newLeafNode(otherlv_2, grammarAccess.getBoolVariableAccess().getEqualsSignKeyword_2_0());
                        
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2334:1: ( (lv_value_3_0= ruleBoolExpression ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2335:1: (lv_value_3_0= ruleBoolExpression )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2335:1: (lv_value_3_0= ruleBoolExpression )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2336:3: lv_value_3_0= ruleBoolExpression
                    {
                     
                    	        newCompositeNode(grammarAccess.getBoolVariableAccess().getValueBoolExpressionParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleBoolExpression_in_ruleBoolVariable5354);
                    lv_value_3_0=ruleBoolExpression();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBoolVariableRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_3_0, 
                            		"BoolExpression");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleBoolVariable5368); 

                	newLeafNode(otherlv_4, grammarAccess.getBoolVariableAccess().getSemicolonKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBoolVariable"


    // $ANTLR start "entryRuleAssigment"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2364:1: entryRuleAssigment returns [EObject current=null] : iv_ruleAssigment= ruleAssigment EOF ;
    public final EObject entryRuleAssigment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssigment = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2365:2: (iv_ruleAssigment= ruleAssigment EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2366:2: iv_ruleAssigment= ruleAssigment EOF
            {
             newCompositeNode(grammarAccess.getAssigmentRule()); 
            pushFollow(FOLLOW_ruleAssigment_in_entryRuleAssigment5404);
            iv_ruleAssigment=ruleAssigment();

            state._fsp--;

             current =iv_ruleAssigment; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssigment5414); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssigment"


    // $ANTLR start "ruleAssigment"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2373:1: ruleAssigment returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_right_2_0= ruleMathExpression ) ) otherlv_3= ';' ) ;
    public final EObject ruleAssigment() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_right_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2376:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_right_2_0= ruleMathExpression ) ) otherlv_3= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2377:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_right_2_0= ruleMathExpression ) ) otherlv_3= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2377:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_right_2_0= ruleMathExpression ) ) otherlv_3= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2377:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '=' ( (lv_right_2_0= ruleMathExpression ) ) otherlv_3= ';'
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2377:2: ( (otherlv_0= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2378:1: (otherlv_0= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2378:1: (otherlv_0= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2379:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getAssigmentRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAssigment5459); 

            		newLeafNode(otherlv_0, grammarAccess.getAssigmentAccess().getVaVarsCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,51,FOLLOW_51_in_ruleAssigment5471); 

                	newLeafNode(otherlv_1, grammarAccess.getAssigmentAccess().getEqualsSignKeyword_1());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2394:1: ( (lv_right_2_0= ruleMathExpression ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2395:1: (lv_right_2_0= ruleMathExpression )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2395:1: (lv_right_2_0= ruleMathExpression )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2396:3: lv_right_2_0= ruleMathExpression
            {
             
            	        newCompositeNode(grammarAccess.getAssigmentAccess().getRightMathExpressionParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleMathExpression_in_ruleAssigment5492);
            lv_right_2_0=ruleMathExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAssigmentRule());
            	        }
                   		set(
                   			current, 
                   			"right",
                    		lv_right_2_0, 
                    		"MathExpression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,29,FOLLOW_29_in_ruleAssigment5504); 

                	newLeafNode(otherlv_3, grammarAccess.getAssigmentAccess().getSemicolonKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssigment"


    // $ANTLR start "entryRuleLiteralAbs"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2426:1: entryRuleLiteralAbs returns [EObject current=null] : iv_ruleLiteralAbs= ruleLiteralAbs EOF ;
    public final EObject entryRuleLiteralAbs() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteralAbs = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2427:2: (iv_ruleLiteralAbs= ruleLiteralAbs EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2428:2: iv_ruleLiteralAbs= ruleLiteralAbs EOF
            {
             newCompositeNode(grammarAccess.getLiteralAbsRule()); 
            pushFollow(FOLLOW_ruleLiteralAbs_in_entryRuleLiteralAbs5542);
            iv_ruleLiteralAbs=ruleLiteralAbs();

            state._fsp--;

             current =iv_ruleLiteralAbs; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLiteralAbs5552); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLiteralAbs"


    // $ANTLR start "ruleLiteralAbs"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2435:1: ruleLiteralAbs returns [EObject current=null] : (this_Literal_0= ruleLiteral | this_StringLiteral_1= ruleStringLiteral | this_BoolLiteral_2= ruleBoolLiteral ) ;
    public final EObject ruleLiteralAbs() throws RecognitionException {
        EObject current = null;

        EObject this_Literal_0 = null;

        EObject this_StringLiteral_1 = null;

        EObject this_BoolLiteral_2 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2438:28: ( (this_Literal_0= ruleLiteral | this_StringLiteral_1= ruleStringLiteral | this_BoolLiteral_2= ruleBoolLiteral ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2439:1: (this_Literal_0= ruleLiteral | this_StringLiteral_1= ruleStringLiteral | this_BoolLiteral_2= ruleBoolLiteral )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2439:1: (this_Literal_0= ruleLiteral | this_StringLiteral_1= ruleStringLiteral | this_BoolLiteral_2= ruleBoolLiteral )
            int alt30=3;
            switch ( input.LA(1) ) {
            case RULE_ID:
            case RULE_INT:
            case RULE_NULL:
            case RULE_SESSION:
            case RULE_DOUBLE:
                {
                alt30=1;
                }
                break;
            case RULE_STRING:
                {
                alt30=2;
                }
                break;
            case RULE_BOOL:
                {
                alt30=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }

            switch (alt30) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2440:5: this_Literal_0= ruleLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getLiteralAbsAccess().getLiteralParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleLiteral_in_ruleLiteralAbs5599);
                    this_Literal_0=ruleLiteral();

                    state._fsp--;

                     
                            current = this_Literal_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2450:5: this_StringLiteral_1= ruleStringLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getLiteralAbsAccess().getStringLiteralParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleStringLiteral_in_ruleLiteralAbs5626);
                    this_StringLiteral_1=ruleStringLiteral();

                    state._fsp--;

                     
                            current = this_StringLiteral_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2460:5: this_BoolLiteral_2= ruleBoolLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getLiteralAbsAccess().getBoolLiteralParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleBoolLiteral_in_ruleLiteralAbs5653);
                    this_BoolLiteral_2=ruleBoolLiteral();

                    state._fsp--;

                     
                            current = this_BoolLiteral_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLiteralAbs"


    // $ANTLR start "entryRuleLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2476:1: entryRuleLiteral returns [EObject current=null] : iv_ruleLiteral= ruleLiteral EOF ;
    public final EObject entryRuleLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLiteral = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2477:2: (iv_ruleLiteral= ruleLiteral EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2478:2: iv_ruleLiteral= ruleLiteral EOF
            {
             newCompositeNode(grammarAccess.getLiteralRule()); 
            pushFollow(FOLLOW_ruleLiteral_in_entryRuleLiteral5688);
            iv_ruleLiteral=ruleLiteral();

            state._fsp--;

             current =iv_ruleLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLiteral5698); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLiteral"


    // $ANTLR start "ruleLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2485:1: ruleLiteral returns [EObject current=null] : (this_NumLiteral_0= ruleNumLiteral | ( (otherlv_1= RULE_ID ) ) | ( (lv_nul_2_0= RULE_NULL ) ) | ( (lv_ses_3_0= RULE_SESSION ) ) ) ;
    public final EObject ruleLiteral() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_nul_2_0=null;
        Token lv_ses_3_0=null;
        EObject this_NumLiteral_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2488:28: ( (this_NumLiteral_0= ruleNumLiteral | ( (otherlv_1= RULE_ID ) ) | ( (lv_nul_2_0= RULE_NULL ) ) | ( (lv_ses_3_0= RULE_SESSION ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2489:1: (this_NumLiteral_0= ruleNumLiteral | ( (otherlv_1= RULE_ID ) ) | ( (lv_nul_2_0= RULE_NULL ) ) | ( (lv_ses_3_0= RULE_SESSION ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2489:1: (this_NumLiteral_0= ruleNumLiteral | ( (otherlv_1= RULE_ID ) ) | ( (lv_nul_2_0= RULE_NULL ) ) | ( (lv_ses_3_0= RULE_SESSION ) ) )
            int alt31=4;
            switch ( input.LA(1) ) {
            case RULE_INT:
            case RULE_DOUBLE:
                {
                alt31=1;
                }
                break;
            case RULE_ID:
                {
                alt31=2;
                }
                break;
            case RULE_NULL:
                {
                alt31=3;
                }
                break;
            case RULE_SESSION:
                {
                alt31=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }

            switch (alt31) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2490:5: this_NumLiteral_0= ruleNumLiteral
                    {
                     
                            newCompositeNode(grammarAccess.getLiteralAccess().getNumLiteralParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleNumLiteral_in_ruleLiteral5745);
                    this_NumLiteral_0=ruleNumLiteral();

                    state._fsp--;

                     
                            current = this_NumLiteral_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2499:6: ( (otherlv_1= RULE_ID ) )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2499:6: ( (otherlv_1= RULE_ID ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2500:1: (otherlv_1= RULE_ID )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2500:1: (otherlv_1= RULE_ID )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2501:3: otherlv_1= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getLiteralRule());
                    	        }
                            
                    otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLiteral5770); 

                    		newLeafNode(otherlv_1, grammarAccess.getLiteralAccess().getVVarsCrossReference_1_0()); 
                    	

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2513:6: ( (lv_nul_2_0= RULE_NULL ) )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2513:6: ( (lv_nul_2_0= RULE_NULL ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2514:1: (lv_nul_2_0= RULE_NULL )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2514:1: (lv_nul_2_0= RULE_NULL )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2515:3: lv_nul_2_0= RULE_NULL
                    {
                    lv_nul_2_0=(Token)match(input,RULE_NULL,FOLLOW_RULE_NULL_in_ruleLiteral5793); 

                    			newLeafNode(lv_nul_2_0, grammarAccess.getLiteralAccess().getNulNULLTerminalRuleCall_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getLiteralRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"nul",
                            		lv_nul_2_0, 
                            		"NULL");
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2532:6: ( (lv_ses_3_0= RULE_SESSION ) )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2532:6: ( (lv_ses_3_0= RULE_SESSION ) )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2533:1: (lv_ses_3_0= RULE_SESSION )
                    {
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2533:1: (lv_ses_3_0= RULE_SESSION )
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2534:3: lv_ses_3_0= RULE_SESSION
                    {
                    lv_ses_3_0=(Token)match(input,RULE_SESSION,FOLLOW_RULE_SESSION_in_ruleLiteral5821); 

                    			newLeafNode(lv_ses_3_0, grammarAccess.getLiteralAccess().getSesSESSIONTerminalRuleCall_3_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getLiteralRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"ses",
                            		lv_ses_3_0, 
                            		"SESSION");
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLiteral"


    // $ANTLR start "entryRuleBoolLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2558:1: entryRuleBoolLiteral returns [EObject current=null] : iv_ruleBoolLiteral= ruleBoolLiteral EOF ;
    public final EObject entryRuleBoolLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBoolLiteral = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2559:2: (iv_ruleBoolLiteral= ruleBoolLiteral EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2560:2: iv_ruleBoolLiteral= ruleBoolLiteral EOF
            {
             newCompositeNode(grammarAccess.getBoolLiteralRule()); 
            pushFollow(FOLLOW_ruleBoolLiteral_in_entryRuleBoolLiteral5862);
            iv_ruleBoolLiteral=ruleBoolLiteral();

            state._fsp--;

             current =iv_ruleBoolLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBoolLiteral5872); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBoolLiteral"


    // $ANTLR start "ruleBoolLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2567:1: ruleBoolLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_BOOL ) ) ) ;
    public final EObject ruleBoolLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2570:28: ( ( () ( (lv_value_1_0= RULE_BOOL ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2571:1: ( () ( (lv_value_1_0= RULE_BOOL ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2571:1: ( () ( (lv_value_1_0= RULE_BOOL ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2571:2: () ( (lv_value_1_0= RULE_BOOL ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2571:2: ()
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2572:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getBoolLiteralAccess().getBoolLiteralAction_0(),
                        current);
                

            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2577:2: ( (lv_value_1_0= RULE_BOOL ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2578:1: (lv_value_1_0= RULE_BOOL )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2578:1: (lv_value_1_0= RULE_BOOL )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2579:3: lv_value_1_0= RULE_BOOL
            {
            lv_value_1_0=(Token)match(input,RULE_BOOL,FOLLOW_RULE_BOOL_in_ruleBoolLiteral5923); 

            			newLeafNode(lv_value_1_0, grammarAccess.getBoolLiteralAccess().getValueBOOLTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getBoolLiteralRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"BOOL");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBoolLiteral"


    // $ANTLR start "entryRuleNumLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2603:1: entryRuleNumLiteral returns [EObject current=null] : iv_ruleNumLiteral= ruleNumLiteral EOF ;
    public final EObject entryRuleNumLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumLiteral = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2604:2: (iv_ruleNumLiteral= ruleNumLiteral EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2605:2: iv_ruleNumLiteral= ruleNumLiteral EOF
            {
             newCompositeNode(grammarAccess.getNumLiteralRule()); 
            pushFollow(FOLLOW_ruleNumLiteral_in_entryRuleNumLiteral5964);
            iv_ruleNumLiteral=ruleNumLiteral();

            state._fsp--;

             current =iv_ruleNumLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumLiteral5974); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumLiteral"


    // $ANTLR start "ruleNumLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2612:1: ruleNumLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= ruleNumber ) ) ) ;
    public final EObject ruleNumLiteral() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_1_0 = null;


         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2615:28: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2616:1: ( () ( (lv_value_1_0= ruleNumber ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2616:1: ( () ( (lv_value_1_0= ruleNumber ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2616:2: () ( (lv_value_1_0= ruleNumber ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2616:2: ()
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2617:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getNumLiteralAccess().getNumLiteralAction_0(),
                        current);
                

            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2622:2: ( (lv_value_1_0= ruleNumber ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2623:1: (lv_value_1_0= ruleNumber )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2623:1: (lv_value_1_0= ruleNumber )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2624:3: lv_value_1_0= ruleNumber
            {
             
            	        newCompositeNode(grammarAccess.getNumLiteralAccess().getValueNumberParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleNumber_in_ruleNumLiteral6029);
            lv_value_1_0=ruleNumber();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getNumLiteralRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"Number");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumLiteral"


    // $ANTLR start "entryRuleStringLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2648:1: entryRuleStringLiteral returns [EObject current=null] : iv_ruleStringLiteral= ruleStringLiteral EOF ;
    public final EObject entryRuleStringLiteral() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStringLiteral = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2649:2: (iv_ruleStringLiteral= ruleStringLiteral EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2650:2: iv_ruleStringLiteral= ruleStringLiteral EOF
            {
             newCompositeNode(grammarAccess.getStringLiteralRule()); 
            pushFollow(FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral6065);
            iv_ruleStringLiteral=ruleStringLiteral();

            state._fsp--;

             current =iv_ruleStringLiteral; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStringLiteral6075); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStringLiteral"


    // $ANTLR start "ruleStringLiteral"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2657:1: ruleStringLiteral returns [EObject current=null] : ( () ( (lv_value_1_0= RULE_STRING ) ) ) ;
    public final EObject ruleStringLiteral() throws RecognitionException {
        EObject current = null;

        Token lv_value_1_0=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2660:28: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2661:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2661:1: ( () ( (lv_value_1_0= RULE_STRING ) ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2661:2: () ( (lv_value_1_0= RULE_STRING ) )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2661:2: ()
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2662:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getStringLiteralAccess().getStringLiteralAction_0(),
                        current);
                

            }

            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2667:2: ( (lv_value_1_0= RULE_STRING ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2668:1: (lv_value_1_0= RULE_STRING )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2668:1: (lv_value_1_0= RULE_STRING )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2669:3: lv_value_1_0= RULE_STRING
            {
            lv_value_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringLiteral6126); 

            			newLeafNode(lv_value_1_0, grammarAccess.getStringLiteralAccess().getValueSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getStringLiteralRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"value",
                    		lv_value_1_0, 
                    		"STRING");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStringLiteral"


    // $ANTLR start "entryRuleSave"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2693:1: entryRuleSave returns [EObject current=null] : iv_ruleSave= ruleSave EOF ;
    public final EObject entryRuleSave() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSave = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2694:2: (iv_ruleSave= ruleSave EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2695:2: iv_ruleSave= ruleSave EOF
            {
             newCompositeNode(grammarAccess.getSaveRule()); 
            pushFollow(FOLLOW_ruleSave_in_entryRuleSave6167);
            iv_ruleSave=ruleSave();

            state._fsp--;

             current =iv_ruleSave; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSave6177); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSave"


    // $ANTLR start "ruleSave"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2702:1: ruleSave returns [EObject current=null] : (otherlv_0= 'save' ( (otherlv_1= RULE_ID ) ) otherlv_2= ';' ) ;
    public final EObject ruleSave() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2705:28: ( (otherlv_0= 'save' ( (otherlv_1= RULE_ID ) ) otherlv_2= ';' ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2706:1: (otherlv_0= 'save' ( (otherlv_1= RULE_ID ) ) otherlv_2= ';' )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2706:1: (otherlv_0= 'save' ( (otherlv_1= RULE_ID ) ) otherlv_2= ';' )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2706:3: otherlv_0= 'save' ( (otherlv_1= RULE_ID ) ) otherlv_2= ';'
            {
            otherlv_0=(Token)match(input,54,FOLLOW_54_in_ruleSave6214); 

                	newLeafNode(otherlv_0, grammarAccess.getSaveAccess().getSaveKeyword_0());
                
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2710:1: ( (otherlv_1= RULE_ID ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2711:1: (otherlv_1= RULE_ID )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2711:1: (otherlv_1= RULE_ID )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2712:3: otherlv_1= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getSaveRule());
            	        }
                    
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSave6234); 

            		newLeafNode(otherlv_1, grammarAccess.getSaveAccess().getThatVarsCrossReference_1_0()); 
            	

            }


            }

            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleSave6246); 

                	newLeafNode(otherlv_2, grammarAccess.getSaveAccess().getSemicolonKeyword_2());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSave"


    // $ANTLR start "entryRuleNumber"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2735:1: entryRuleNumber returns [String current=null] : iv_ruleNumber= ruleNumber EOF ;
    public final String entryRuleNumber() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleNumber = null;


        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2736:2: (iv_ruleNumber= ruleNumber EOF )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2737:2: iv_ruleNumber= ruleNumber EOF
            {
             newCompositeNode(grammarAccess.getNumberRule()); 
            pushFollow(FOLLOW_ruleNumber_in_entryRuleNumber6283);
            iv_ruleNumber=ruleNumber();

            state._fsp--;

             current =iv_ruleNumber.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumber6294); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumber"


    // $ANTLR start "ruleNumber"
    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2744:1: ruleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_DOUBLE_0= RULE_DOUBLE | this_INT_1= RULE_INT ) ;
    public final AntlrDatatypeRuleToken ruleNumber() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_DOUBLE_0=null;
        Token this_INT_1=null;

         enterRule(); 
            
        try {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2747:28: ( (this_DOUBLE_0= RULE_DOUBLE | this_INT_1= RULE_INT ) )
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2748:1: (this_DOUBLE_0= RULE_DOUBLE | this_INT_1= RULE_INT )
            {
            // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2748:1: (this_DOUBLE_0= RULE_DOUBLE | this_INT_1= RULE_INT )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==RULE_DOUBLE) ) {
                alt32=1;
            }
            else if ( (LA32_0==RULE_INT) ) {
                alt32=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2748:6: this_DOUBLE_0= RULE_DOUBLE
                    {
                    this_DOUBLE_0=(Token)match(input,RULE_DOUBLE,FOLLOW_RULE_DOUBLE_in_ruleNumber6334); 

                    		current.merge(this_DOUBLE_0);
                        
                     
                        newLeafNode(this_DOUBLE_0, grammarAccess.getNumberAccess().getDOUBLETerminalRuleCall_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../org.xtext.telcodev.dsl/src-gen/org/xtext/telcodev/dsl/parser/antlr/internal/InternalVoiS.g:2756:10: this_INT_1= RULE_INT
                    {
                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNumber6360); 

                    		current.merge(this_INT_1);
                        
                     
                        newLeafNode(this_INT_1, grammarAccess.getNumberAccess().getINTTerminalRuleCall_1()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumber"

    // Delegated rules


    protected DFA22 dfa22 = new DFA22(this);
    static final String DFA22_eotS =
        "\14\uffff";
    static final String DFA22_eofS =
        "\2\uffff\1\12\5\13\4\uffff";
    static final String DFA22_minS =
        "\1\4\1\uffff\6\11\4\uffff";
    static final String DFA22_maxS =
        "\1\50\1\uffff\6\52\4\uffff";
    static final String DFA22_acceptS =
        "\1\uffff\1\1\6\uffff\1\3\1\4\1\2\1\5";
    static final String DFA22_specialS =
        "\14\uffff}>";
    static final String[] DFA22_transitionS = {
            "\1\5\1\uffff\1\4\1\10\3\uffff\1\11\2\uffff\1\6\1\7\1\2\1\3\26"+
            "\uffff\1\1",
            "",
            "\1\12\1\10\17\uffff\1\12\2\uffff\1\12\14\uffff\1\12",
            "\1\13\1\10\17\uffff\1\13\2\uffff\1\13\14\uffff\1\13",
            "\1\13\1\10\17\uffff\1\13\2\uffff\1\13\14\uffff\1\13",
            "\1\13\1\10\17\uffff\1\13\2\uffff\1\13\14\uffff\1\13",
            "\1\13\1\10\17\uffff\1\13\2\uffff\1\13\14\uffff\1\13",
            "\1\13\1\10\17\uffff\1\13\2\uffff\1\13\14\uffff\1\13",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA22_eot = DFA.unpackEncodedString(DFA22_eotS);
    static final short[] DFA22_eof = DFA.unpackEncodedString(DFA22_eofS);
    static final char[] DFA22_min = DFA.unpackEncodedStringToUnsignedChars(DFA22_minS);
    static final char[] DFA22_max = DFA.unpackEncodedStringToUnsignedChars(DFA22_maxS);
    static final short[] DFA22_accept = DFA.unpackEncodedString(DFA22_acceptS);
    static final short[] DFA22_special = DFA.unpackEncodedString(DFA22_specialS);
    static final short[][] DFA22_transition;

    static {
        int numStates = DFA22_transitionS.length;
        DFA22_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA22_transition[i] = DFA.unpackEncodedString(DFA22_transitionS[i]);
        }
    }

    class DFA22 extends DFA {

        public DFA22(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 22;
            this.eot = DFA22_eot;
            this.eof = DFA22_eof;
            this.min = DFA22_min;
            this.max = DFA22_max;
            this.accept = DFA22_accept;
            this.special = DFA22_special;
            this.transition = DFA22_transition;
        }
        public String getDescription() {
            return "1720:1: ( (otherlv_0= '(' this_BoolExpression_1= ruleBoolExpression otherlv_2= ')' ) | this_BoolLiteral_3= ruleBoolLiteral | this_CompareExpression_4= ruleCompareExpression | this_NegExpression_5= ruleNegExpression | this_Literal_6= ruleLiteral )";
        }
    }
 

    public static final BitSet FOLLOW_ruleDocument_in_entryRuleDocument75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDocument85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_ruleDocument122 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDocument139 = new BitSet(new long[]{0x0036289CD6C00032L});
    public static final BitSet FOLLOW_22_in_ruleDocument162 = new BitSet(new long[]{0x0036289CD6800032L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_ruleDocument197 = new BitSet(new long[]{0x0036289CD6800032L});
    public static final BitSet FOLLOW_ruleState_in_ruleDocument219 = new BitSet(new long[]{0x0000000006800002L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement256 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractElement266 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleAbstractElement313 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIfExp_in_ruleAbstractElement340 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStatement_in_entryRuleStatement375 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStatement385 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumVariable_in_ruleStatement432 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringVariable_in_ruleStatement459 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolVariable_in_ruleStatement486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVoiceTag_in_ruleStatement513 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssigment_in_ruleStatement540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ML_COMMENT_in_ruleStatement556 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStateAbstractElement_in_entryRuleStateAbstractElement591 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStateAbstractElement601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStatement_in_ruleStateAbstractElement648 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSave_in_ruleStateAbstractElement675 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTransition_in_ruleStateAbstractElement702 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIfStateExp_in_ruleStateAbstractElement729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleState_in_entryRuleState764 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleState774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleState856 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleState873 = new BitSet(new long[]{0x0000000007800002L});
    public static final BitSet FOLLOW_24_in_ruleState891 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleState908 = new BitSet(new long[]{0x0000000006800002L});
    public static final BitSet FOLLOW_25_in_ruleState984 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleState1001 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_26_in_ruleState1020 = new BitSet(new long[]{0x0076689CD8000030L});
    public static final BitSet FOLLOW_ruleStateAbstractElement_in_ruleState1041 = new BitSet(new long[]{0x0076689CD8000030L});
    public static final BitSet FOLLOW_27_in_ruleState1054 = new BitSet(new long[]{0x0000000006800002L});
    public static final BitSet FOLLOW_ruleVoiceTag_in_entryRuleVoiceTag1136 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVoiceTag1146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSay_in_ruleVoiceTag1193 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDial_in_ruleVoiceTag1220 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlay_in_ruleVoiceTag1247 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRecord_in_ruleVoiceTag1274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGetDigits_in_ruleVoiceTag1301 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAsk_in_ruleVoiceTag1328 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSend_in_ruleVoiceTag1355 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReject_in_ruleVoiceTag1382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHangup_in_ruleVoiceTag1409 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDial_in_entryRuleDial1444 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDial1454 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleDial1491 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleDial1512 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleDial1524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePlay_in_entryRulePlay1560 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePlay1570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_rulePlay1607 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_rulePlay1628 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_rulePlay1640 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRecord_in_entryRuleRecord1676 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRecord1686 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleRecord1723 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleRecord1744 = new BitSet(new long[]{0x0000000320000000L});
    public static final BitSet FOLLOW_32_in_ruleRecord1757 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleRecord1774 = new BitSet(new long[]{0x0000000220000000L});
    public static final BitSet FOLLOW_33_in_ruleRecord1794 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRecord1811 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleRecord1830 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReject_in_entryRuleReject1866 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReject1876 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleReject1919 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleReject1944 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleHangup_in_entryRuleHangup1980 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleHangup1990 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_35_in_ruleHangup2033 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleHangup2058 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGetDigits_in_entryRuleGetDigits2094 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGetDigits2104 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleGetDigits2141 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleGetDigits2158 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleGetDigits2175 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleGetDigits2196 = new BitSet(new long[]{0x0000004000000000L});
    public static final BitSet FOLLOW_38_in_ruleGetDigits2208 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleGetDigits2225 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleGetDigits2242 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAsk_in_entryRuleAsk2278 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAsk2288 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_39_in_ruleAsk2325 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAsk2342 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleAsk2359 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleAsk2380 = new BitSet(new long[]{0x0000010020000000L});
    public static final BitSet FOLLOW_40_in_ruleAsk2393 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_ruleAsk2406 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleAsk2423 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_42_in_ruleAsk2441 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleAsk2455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSend_in_entryRuleSend2491 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSend2501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_ruleSend2538 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleSend2555 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleSend2581 = new BitSet(new long[]{0x0000100000000000L});
    public static final BitSet FOLLOW_44_in_ruleSend2593 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleSend2614 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleSend2626 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSay_in_entryRuleSay2662 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSay2672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleSay2709 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleSay2730 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleSay2742 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTransition_in_entryRuleTransition2778 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTransition2788 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleTransition2825 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTransition2845 = new BitSet(new long[]{0x0000800000000000L});
    public static final BitSet FOLLOW_47_in_ruleTransition2857 = new BitSet(new long[]{0x0000000000000100L});
    public static final BitSet FOLLOW_RULE_EVENTENUM_in_ruleTransition2874 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleTransition2891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIfExp_in_entryRuleIfExp2927 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIfExp2937 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondBlock_in_ruleIfExp2983 = new BitSet(new long[]{0x0001000000000002L});
    public static final BitSet FOLLOW_48_in_ruleIfExp2996 = new BitSet(new long[]{0x0036289CD0000030L});
    public static final BitSet FOLLOW_ruleCondBlock_in_ruleIfExp3017 = new BitSet(new long[]{0x0001000000000002L});
    public static final BitSet FOLLOW_48_in_ruleIfExp3032 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_ruleBlock_in_ruleIfExp3053 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlock_in_entryRuleBlock3091 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBlock3101 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleBlock3138 = new BitSet(new long[]{0x0036289CD8000030L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_ruleBlock3159 = new BitSet(new long[]{0x0036289CD8000030L});
    public static final BitSet FOLLOW_27_in_ruleBlock3172 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondBlock_in_entryRuleCondBlock3208 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCondBlock3218 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleCondBlock3255 = new BitSet(new long[]{0x000001000003C8D0L});
    public static final BitSet FOLLOW_ruleTerminalBoolExpression_in_ruleCondBlock3276 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_ruleBlock_in_ruleCondBlock3297 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIfStateExp_in_entryRuleIfStateExp3333 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIfStateExp3343 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondStateBlock_in_ruleIfStateExp3389 = new BitSet(new long[]{0x0001000000000002L});
    public static final BitSet FOLLOW_48_in_ruleIfStateExp3402 = new BitSet(new long[]{0x0076689CD0000030L});
    public static final BitSet FOLLOW_ruleCondStateBlock_in_ruleIfStateExp3423 = new BitSet(new long[]{0x0001000000000002L});
    public static final BitSet FOLLOW_48_in_ruleIfStateExp3438 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_ruleBlockState_in_ruleIfStateExp3459 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCondStateBlock_in_entryRuleCondStateBlock3497 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCondStateBlock3507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleCondStateBlock3544 = new BitSet(new long[]{0x000001000003C8D0L});
    public static final BitSet FOLLOW_ruleTerminalBoolExpression_in_ruleCondStateBlock3565 = new BitSet(new long[]{0x0000000004000000L});
    public static final BitSet FOLLOW_ruleBlockState_in_ruleCondStateBlock3586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBlockState_in_entryRuleBlockState3622 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBlockState3632 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleBlockState3669 = new BitSet(new long[]{0x0076689CD8000030L});
    public static final BitSet FOLLOW_ruleStateAbstractElement_in_ruleBlockState3690 = new BitSet(new long[]{0x0076689CD8000030L});
    public static final BitSet FOLLOW_27_in_ruleBlockState3703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolExpression_in_entryRuleBoolExpression3739 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBoolExpression3749 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTerminalBoolExpression_in_ruleBoolExpression3796 = new BitSet(new long[]{0x0000000000000202L});
    public static final BitSet FOLLOW_RULE_LOGIC_WORD_in_ruleBoolExpression3822 = new BitSet(new long[]{0x000001000003C8D0L});
    public static final BitSet FOLLOW_ruleBoolExpression_in_ruleBoolExpression3848 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTerminalBoolExpression_in_entryRuleTerminalBoolExpression3886 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTerminalBoolExpression3896 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleTerminalBoolExpression3934 = new BitSet(new long[]{0x000001000003C8D0L});
    public static final BitSet FOLLOW_ruleBoolExpression_in_ruleTerminalBoolExpression3956 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_42_in_ruleTerminalBoolExpression3967 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleTerminalBoolExpression3996 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompareExpression_in_ruleTerminalBoolExpression4023 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNegExpression_in_ruleTerminalBoolExpression4050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_ruleTerminalBoolExpression4077 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompareExpression_in_entryRuleCompareExpression4112 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCompareExpression4122 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteralAbs_in_ruleCompareExpression4168 = new BitSet(new long[]{0x0000000000000400L});
    public static final BitSet FOLLOW_RULE_COMPARE_in_ruleCompareExpression4185 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleLiteralAbs_in_ruleCompareExpression4211 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNegExpression_in_entryRuleNegExpression4247 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNegExpression4257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_NEGATION_in_ruleNegExpression4299 = new BitSet(new long[]{0x000001000003C8D0L});
    public static final BitSet FOLLOW_ruleTerminalBoolExpression_in_ruleNegExpression4325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMathExpression_in_entryRuleMathExpression4361 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMathExpression4371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMathTerminal_in_ruleMathExpression4418 = new BitSet(new long[]{0x0000000000001002L});
    public static final BitSet FOLLOW_RULE_MATH_in_ruleMathExpression4444 = new BitSet(new long[]{0x000001000002C050L});
    public static final BitSet FOLLOW_ruleMathExpression_in_ruleMathExpression4470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMathTerminal_in_entryRuleMathTerminal4508 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMathTerminal4518 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleMathTerminal4556 = new BitSet(new long[]{0x000001000002C050L});
    public static final BitSet FOLLOW_ruleMathExpression_in_ruleMathTerminal4578 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_42_in_ruleMathTerminal4589 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_ruleMathTerminal4618 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_entryRuleConcatenationExpression4653 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConcatenationExpression4663 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConcatenationTerminal_in_ruleConcatenationExpression4710 = new BitSet(new long[]{0x0000000000002002L});
    public static final BitSet FOLLOW_RULE_CONCATENATION_in_ruleConcatenationExpression4736 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleConcatenationExpression4762 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConcatenationTerminal_in_entryRuleConcatenationTerminal4800 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConcatenationTerminal4810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_40_in_ruleConcatenationTerminal4848 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleConcatenationTerminal4870 = new BitSet(new long[]{0x0000040000000000L});
    public static final BitSet FOLLOW_42_in_ruleConcatenationTerminal4881 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteralAbs_in_ruleConcatenationTerminal4910 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringVariable_in_entryRuleStringVariable4945 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringVariable4955 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_50_in_ruleStringVariable4992 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleStringVariable5009 = new BitSet(new long[]{0x0008000020000000L});
    public static final BitSet FOLLOW_51_in_ruleStringVariable5027 = new BitSet(new long[]{0x000001000003C0D0L});
    public static final BitSet FOLLOW_ruleConcatenationExpression_in_ruleStringVariable5048 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleStringVariable5062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumVariable_in_entryRuleNumVariable5098 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumVariable5108 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleNumVariable5145 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNumVariable5162 = new BitSet(new long[]{0x0008000020000000L});
    public static final BitSet FOLLOW_51_in_ruleNumVariable5180 = new BitSet(new long[]{0x000001000002C050L});
    public static final BitSet FOLLOW_ruleMathExpression_in_ruleNumVariable5201 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleNumVariable5215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolVariable_in_entryRuleBoolVariable5251 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBoolVariable5261 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleBoolVariable5298 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleBoolVariable5315 = new BitSet(new long[]{0x0008000020000000L});
    public static final BitSet FOLLOW_51_in_ruleBoolVariable5333 = new BitSet(new long[]{0x000001000003C8D0L});
    public static final BitSet FOLLOW_ruleBoolExpression_in_ruleBoolVariable5354 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleBoolVariable5368 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssigment_in_entryRuleAssigment5404 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssigment5414 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAssigment5459 = new BitSet(new long[]{0x0008000000000000L});
    public static final BitSet FOLLOW_51_in_ruleAssigment5471 = new BitSet(new long[]{0x000001000002C050L});
    public static final BitSet FOLLOW_ruleMathExpression_in_ruleAssigment5492 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleAssigment5504 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteralAbs_in_entryRuleLiteralAbs5542 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLiteralAbs5552 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_ruleLiteralAbs5599 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringLiteral_in_ruleLiteralAbs5626 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolLiteral_in_ruleLiteralAbs5653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLiteral_in_entryRuleLiteral5688 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLiteral5698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumLiteral_in_ruleLiteral5745 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLiteral5770 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_NULL_in_ruleLiteral5793 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_SESSION_in_ruleLiteral5821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBoolLiteral_in_entryRuleBoolLiteral5862 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBoolLiteral5872 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_BOOL_in_ruleBoolLiteral5923 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumLiteral_in_entryRuleNumLiteral5964 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumLiteral5974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumber_in_ruleNumLiteral6029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStringLiteral_in_entryRuleStringLiteral6065 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStringLiteral6075 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringLiteral6126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSave_in_entryRuleSave6167 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSave6177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_54_in_ruleSave6214 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSave6234 = new BitSet(new long[]{0x0000000020000000L});
    public static final BitSet FOLLOW_29_in_ruleSave6246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumber_in_entryRuleNumber6283 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumber6294 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_DOUBLE_in_ruleNumber6334 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNumber6360 = new BitSet(new long[]{0x0000000000000002L});

}
